Add some docs for torrent creation
[grml-server-setup.git] / README.asciidoc
1 server documentation for grml
2 =============================
3 grml team <info@grml.org>
4 v0.0, July 2011
5
6 make apt sane
7 -------------
8
9 --------------------------------------
10 echo 'APT::Install-Recommends "0";' > /etc/apt/apt.conf.d/99norecommends
11 --------------------------------------
12
13
14 lvm
15 ---
16
17 * create a partition with partition type 8E (linux lvm)
18 * +apt-get install lvm2+
19 * Add new volumegroup +vgcreate vg0 /dev/sda6+
20
21 libvirt + kvm
22 -------------
23
24 * +apt-get install libvirt-bin virt-top qemu-kvm debootstrap dbus virtinst
25 netcat-openbsd bridge-utils vde2+
26
27 * remove all additional ips from /e/n/i
28
29 * We use vde2 to create a virtual switch for an internal network and bridge the tap
30   device intern to the bridge intbr
31
32 ./etc/network/interface
33 -------------------------------------
34 auto eth0
35 iface eth0 inet manual
36
37 auto extbr
38 iface extbr inet static
39   address 83.246.69.170
40   netmask 255.255.255.248
41   broadcast 83.246.69.175
42   gateway 83.246.69.169
43   bridge_ports eth0
44   bridge_fd 9
45   bridge_hello 2
46   bridge_maxage 12
47   bridge_stp off
48
49 auto intbr
50 iface intbr inet static
51   address 10.0.3.1
52   netmask 255.255.255.0
53   bridge_fd 9
54   bridge_hello 2
55   bridge_maxage 12
56   bridge_stp off
57   bridge_ports intern
58
59 auto intern
60 iface intern inet manual
61     vde2-switch -t intern
62
63 -------------------------------------
64
65 Enable ksm
66 ~~~~~~~~~~
67 For details about KSM see
68 http://www.kernel.org/doc/Documentation/vm/ksm.txt[ksm.txt]
69
70 ------------------------------
71 apt-get install sysfsutils
72 echo "kernel/mm/ksm/run = 1" >> /etc/sysfs.conf
73 /etc/init.d/sysfsutils start
74 ------------------------------
75
76
77 LDAP
78 ----
79
80 * +apt-get install slapd ldapvi+
81 * Remove old ldap db: +rm /var/lib/ldap/*(db*|bdb|log*|alock)+
82 * Remove slapd.d madness: +rm -rf /etc/ldap/slapd.d+
83
84 ./etc/ldap/slapd.conf
85 ------------------------------------
86 # This is the main slapd configuration file. See slapd.conf(5) for more
87 # info on the configuration options.
88
89 #######################################################################
90 # Global Directives:
91
92 # Features to permit
93 #allow bind_v2
94
95 # Schema and objectClass definitions
96 include         /etc/ldap/schema/core.schema
97 include         /etc/ldap/schema/cosine.schema
98 include         /etc/ldap/schema/nis.schema
99 include         /etc/ldap/schema/inetorgperson.schema
100
101 #ssl support
102 TLSCACertificateFile /etc/ldap/ssl/ca.crt
103 TLSCertificateFile /etc/ldap/ssl/server.crt
104 TLSCertificateKeyFile /etc/ldap/ssl/server.key
105
106
107 # Where the pid file is put. The init.d script
108 # will not stop the server if you change this.
109 pidfile         /var/run/slapd/slapd.pid
110
111 # List of arguments that were passed to the server
112 argsfile        /var/run/slapd/slapd.args
113
114 # Read slapd.conf(5) for possible values
115 loglevel        0
116
117 # Where the dynamically loaded modules are stored
118 modulepath      /usr/lib/ldap
119 moduleload      back_bdb
120
121 # The maximum number of entries that is returned for a search operation
122 sizelimit 500
123
124 # The tool-threads parameter sets the actual amount of cpu's that is used
125 # for indexing.
126 tool-threads 1
127
128 #######################################################################
129 # Specific Backend Directives for bdb:
130 # Backend specific directives apply to this backend until another
131 # 'backend' directive occurs
132 backend         bdb
133
134 #######################################################################
135 # Specific Directives for database #1, of type bdb:
136 # Database specific directives apply to this databasse until another
137 # 'database' directive occurs
138 database        bdb
139
140 # The base of your directory in database #1
141 suffix          "dc=grml,dc=org"
142 checkpoint 512 30
143
144 # rootdn directive for specifying a superuser on the database. This is needed
145 # for syncrepl.
146 # rootdn          "cn=admin,dc=snow-crash,dc=org"
147
148 # Where the database file are physically stored for database #1
149 directory       "/var/lib/ldap"
150
151 # For the Debian package we use 2MB as default but be sure to update this
152 # value if you have plenty of RAM
153 dbconfig set_cachesize 0 2097152 0
154
155 # Sven Hartge reported that he had to set this value incredibly high
156 # to get slapd running at all. See http://bugs.debian.org/303057
157 # for more information.
158
159 # Number of objects that can be locked at the same time.
160 dbconfig set_lk_max_objects 1500
161 # Number of locks (both requested and granted)
162 dbconfig set_lk_max_locks 1500
163 # Number of lockers
164 dbconfig set_lk_max_lockers 1500
165
166 # Indexing options for database #1
167 index           objectClass eq
168
169 # Save the time that the entry gets modified, for database #1
170 lastmod         on
171
172 # The userPassword by default can be changed
173 # by the owner
174 access to attrs=userPassword,shadowLastChange
175         by dn="cn=admin,dc=grml,dc=org" write
176         by anonymous auth
177         by self write
178         by * none
179
180 # Read access for the base (needed by sasl..)
181 access to dn.base="" by * read
182
183 # The admin dn has full write access, everyone else
184 # can read everything.
185 access to *
186         by dn="cn=admin,dc=grml,dc=org" write
187         by * read
188
189 # For Netscape Roaming support, each user gets a roaming
190 # profile for which they have write access to
191 #access to dn=".*,ou=Roaming,o=morsnet"
192 #        by dn="cn=admin,dc=snow-crash,dc=org" write
193 #        by dnattr=owner write
194
195 #######################################################################
196 # Specific Directives for database #2, of type 'other' (can be bdb too):
197 # Database specific directives apply to this databasse until another
198 # 'database' directive occurs
199 #database        <other>
200
201 # The base of your directory for database #2
202 #suffix         "dc=debian,dc=org"
203
204 ------------------------------------
205
206 .initalize ldap db
207 -----------------------------------
208 slapadd -c < EOF
209
210 dn: dc=grml,dc=org
211 objectClass: top
212 objectClass: dcObject
213 objectClass: organization
214 o: grml.org
215 dc: grml
216
217 dn: cn=admin,dc=grml,dc=org
218 objectClass: simpleSecurityObject
219 objectClass: organizationalRole
220 cn: admin
221 description: LDAP administrator
222 userPassword: {SSHA}ctYLwzAfESce+Yok3S9f2iW9HGpdakMB
223
224 dn: ou=People,dc=grml,dc=org
225 ou: People
226 objectClass: top
227 objectClass: organizationalUnit
228 structuralObjectClass: organizationalUnit
229
230 dn: ou=Group,dc=grml,dc=org
231 ou: Group
232 objectClass: top
233 objectClass: organizationalUnit
234 structuralObjectClass: organizationalUnit
235
236 ----------------------------------
237
238 * +chown -R openldap:openldap /var/lib/ldap/* /etc/ldap/slapd.conf+
239 * start slapd
240
241 host firewall
242 -------------
243
244 * +apt-get install ferm+
245
246 .ferm.conf
247 ----------------------------------
248 table filter {
249     chain INPUT {
250         policy DROP;
251
252         # connection tracking
253         mod state state INVALID DROP;
254         mod state state (ESTABLISHED RELATED) ACCEPT;
255
256         # allow local packet
257         interface lo ACCEPT;
258
259         # respond to ping
260         proto icmp ACCEPT; 
261
262         # allow SSH connections
263         proto tcp dport ssh ACCEPT;
264     }
265     chain OUTPUT {
266         policy ACCEPT;
267
268         # connection tracking
269         #mod state state INVALID DROP;
270         mod state state (ESTABLISHED RELATED) ACCEPT;
271     }
272     chain FORWARD {
273         policy DROP;
274
275         # connection tracking
276         mod state state INVALID DROP;
277         mod state state (ESTABLISHED RELATED) ACCEPT;
278     }
279 }
280
281 domain ip6 {
282         table filter {
283                 chain INPUT {
284                         policy DROP;
285
286                         # connection tracking
287                         mod state state INVALID DROP;
288                         mod state state (ESTABLISHED RELATED) ACCEPT;
289
290                         policy ACCEPT;
291
292                         # respond to ping
293                         proto icmpv6 ACCEPT;
294
295                         # allow SSH connections
296                         proto tcp dport ssh ACCEPT;
297
298
299                 }
300
301                 chain OUTPUT {
302                         policy ACCEPT;
303
304                         # connection tracking
305                         #mod state state INVALID DROP;
306                         mod state state (ESTABLISHED RELATED) ACCEPT;
307                 }
308                 chain FORWARD {
309                         policy DROP;
310
311                         # connection tracking   
312                         mod state state INVALID DROP;
313                         mod state state (ESTABLISHED RELATED) ACCEPT;
314                 }
315         }
316 }
317
318 ----------------------------------
319
320
321 3ware tools
322 -----------
323
324 ----------------------------------
325 # echo 'deb http://jonas.genannt.name/debian squeeze restricted' >
326     /etc/apt/sources.list.d/3dm2.list
327 # wget -O - http://jonas.genannt.name/debian/jonas_genannt.pub | apt-key add -
328 # apt-get update ; apt-get install 3ware-cli-binary 3ware-3dm2-binary
329 ---------------------------------
330
331 serial console
332 --------------
333
334 To activate sol for the BMC/IMPI enable gettys for ttyS0. Adjust /etc/inittab
335 and make sure it contains
336
337 ---------------------------------
338 T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
339 ---------------------------------
340
341 grub
342 ~~~~
343 To send the grub output to the serial console as well as the vga console edit
344 /etc/default/grub and add the following lines:
345
346 ---------------------------------
347 GRUB_TERMINAL="serial console"
348 GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
349 ---------------------------------
350
351
352 Configure ipmi
353 --------------
354
355 * Show lan configuration: +ipmitool lan print+
356 * Set ip address: +ipmitool lan set 1 ipaddr $IPADDR+
357 * Set netmask: +ipmitool lan set 1 netmask 255.255.255.248+
358 * Set default gw: +ipmitool lan set 1 defgw ipaddr $GW+
359
360 Show user list: +ipmitool user list 1+
361 Create a new user:
362
363 ---------------------------------
364 ipmitool user set name 6 mru
365 ipmitool user set password 6 PASSWORD
366 ---------------------------------
367
368 Test the connection: +ipmitool -I lanplus -H $IP -U mru -a sol activate+
369
370 user management
371 ---------------
372
373 Usermanagement is done with LDAP and cpu.
374
375 .cpu configuration
376 ------------------------------
377 [GLOBAL]
378 DEFAULT_METHOD  = ldap
379 #CRACKLIB_DICTIONARY = /var/cache/cracklib/cracklib_dict
380
381 [LDAP]
382 LDAP_URI                = ldap://localhost
383 BIND_DN                 = cn=admin,dc=grml,dc=org 
384 BIND_PASS               = XXXXXXXXX
385 USER_BASE               = ou=People,dc=grml,dc=org
386 GROUP_BASE              = ou=Group,dc=grml,dc=org
387 USER_OBJECT_CLASS       = account,posixAccount,shadowAccount,top
388 GROUP_OBJECT_CLASS      = posixGroup,top
389 USER_FILTER     = (objectClass=posixAccount)
390 GROUP_FILTER    = (objectClass=posixGroup)
391 USER_CN_STRING  = uid
392 GROUP_CN_STRING = cn
393 SKEL_DIR        = /etc/skel
394 DEFAULT_SHELL   = /usr/bin/zsh
395 HOME_DIRECTORY  = /home
396 MAX_UIDNUMBER = 10000
397 MIN_UIDNUMBER = 1000
398 MAX_GIDNUMBER = 10000
399 MIN_GIDNUMBER = 1000
400 ID_MAX_PASSES = 1000
401 # Whether each user should have its own group created or not
402 USERGROUPS = yes
403 # If you change usergroup set this to the default group a user should have
404 #USERS_GID = 100
405 RANDOM = "false"
406 PASSWORD_FILE = "/etc/passfile"
407 SHADOW_FILE = "/etc/shadowfile"
408 HASH = "md5"
409 SHADOWLASTCHANGE        = 11192
410 SHADOWMAX               = 99999
411 SHADOWWARING            = 7
412 SHADOWEXPIRE            = -1
413 SHADOWFLAG              = 134538308
414 SHADOWMIN               = -1
415 SHADOWINACTIVE          = -1
416 ------------------------------
417
418 Adding users is simple: +cpu useradd -p formorer+
419 Add user to whell group: +cpu usermod -G wheel formorer+
420
421 puppet
422 ------
423
424 the puppet configuration is on father.
425
426
427 client configuration
428 ~~~~~~~~~~~~~~~~~~~~
429
430 Take care that father.grml.org is resovable (/etc/hosts.conf)
431 .puppet.conf
432 ----------------------------------------------
433 [main]
434 pluginsync=true
435 server = father.grml.org
436 logdir=/var/log/puppet
437 vardir=/var/lib/puppet
438 ssldir=/var/lib/puppet/ssl
439 rundir=/var/run/puppet
440 factpath=$vardir/lib/facter
441 templatedir=$confdir/templates
442 ----------------------------------------------
443
444 run + puppetd -w 5 --debug -t+ afterwards and sign the request on father:
445 w
446 +puppetca --sign hostname+.
447
448 Run it again and check for errors. (It may take up to three runs until
449 everything is ok).
450
451 collectd
452 --------
453
454 TODO
455
456 reprepro
457 --------
458
459 On deb.grml.org:
460
461 ----------------------------------
462 # apt-get install dpkg-dev
463 ----------------------------------
464
465
466
467 repos.grml.org
468 --------------
469
470 ----------------------------------
471 # apt-get install gitolite gitweb openbsd-inetd
472 # echo git stream tcp nowait gitdaemon /usr/bin/git git \
473 daemon --verbose --inetd --base-path=/srv/git/repositories \
474 /srv/git/repositories >> /etc/inetd
475 ----------------------------------
476
477
478 bittorrent
479 ----------
480
481 we use bttrack and transmission-daemon for bittorrent distribution. Both is
482 currently located on web.grml.org. bttrack is supervised by supervisor
483 (http://supervisord.org/) see `/etc/supervisor/conf.d/btracker.conf` for the
484 current configuration. transmission-daemon is started from it's init script.
485
486 If you remove some isos check `/home/tracker/torrents` for broken symlinks. If 
487 you removed something that was in `/home/tracker/torrents` clear the symlink and
488 launch
489
490 ---------------------------------
491 # supervisorctl restart bttrack 
492 --------------------------------
493
494 afterwards.
495
496 Both use `/home/tracker/torrents/` as sourcedir for torrent seeding and allowed
497 torrents in the tracker. This directory is filled with symlinks to the real
498 files because of shortcomings in current BitTorrent software which limits
499 the usefulness of subdirectories.
500
501 create a new torrentfile
502 ------------------------
503
504 to create a new torrent file call btmakemetafile:
505
506 -----------------------------------------------
507  btmakemetafile http://ftp-master.grml.org:6969/announce /var/www/ftp-master.grml.org/grml32-full_2012.05.iso --target /var/www/ftp-master.grml.org/grml32-full_2012.05.iso.torrent --announce_list http://tracker.publicbt.com/announce,http://ftp-master.grml.org:6969/announce,udp://tracker.openbittorrent.com:80/announce,udp://tracker.publicbt.com:80/announce --httpseeds http://download.grml.org/grml32-full_2012.05.iso
508  ---------------------------------------------
509
510 and replace grml32-full_2012.05.iso with your iso name. After you created the file link it to `/home/tracker/torrents/` and restart bttrack afterwards. 
511
512 mirrors
513 -------
514
515 mirrors are configured in Mirrors.masterlist which is located in the
516 grml-mirrors repository. The format of the file should be more or less self
517 explanary. You can use any other entry as template. Please don't broke that
518 file as several other files are generated from that list.
519
520 We generate the following other files from the masterlist:
521
522 - mirmon config (`/etc/mirmon/mirror.list`). mirmon runs
523   (`/usr/local/bin/run_mirmon`) every 15 minutes and
524   calls `/usr/local/src/grml-mirrors/masterlist2mirmon`) after a git pull.
525 - after mirmon runs, `/usr/local/bin/generate_mirror_map` generates the apache
526   `/etc/apache2/grml.map` that drives the geoip mirror redirector.
527
528 The state of our mirrors can be checked via http://mirror.grml.org/.