WSUS auf Windows Server 2012 R2

Instal­liert man die Win­dows Ser­ver Update Ser­vices (WSUS) nach­träg­li­ch auf einem voll gepatchen Win­dows Ser­ver 2012 R2, erhal­ten Win­dows 7 oder Ser­ver 2008 (R2) kei­nen Zugriff auf den WSUS. Grund dafür ist, dass der Sel­fUp­dater unvoll­stän­dig instal­liert wird und die betrof­fe­nen Cli­ents den pas­sen­den Updater nicht nach­la­den kön­nen.
Bei­spiels­wei­se exis­tiert in die­sem Fall der Ord­ner C:\Programme\Update Services\SelfUpdate\WSUS\x64\win7sp1 nicht.

Die Lösung ist, das Update KB2938066 vom WSUS-Ser­ver zu ent­fer­nen und die­sen neu zu star­ten. Anschlie­ßend kann das Update regu­lär wie­der instal­liert wer­den, was einen wei­te­ren Neu­start und die nun kor­rek­te Funk­ti­on mit sich bringt.

Windows 7 Setup mit USB3- & Controllertreibern

Wenn man noch Win­dows 7 auf aktu­el­ler Hard­ware instal­lie­ren möch­te, nutzt man in der Regel einen USB-Strick als Instal­la­ti­ons­me­di­um. Hat das ver­wen­de­te Main­board oder der Lap­top jedoch aus­schließ­li­ch USB3-Anschlüs­se, muss der USB3-Trei­ber in das Set­up ein­ge­bun­den wer­den. Neben der indi­vi­du­el­len, manu­el­len Metho­de, emp­fiehlt sich gene­rell das erstel­len eines Instal­la­ti­ons­ima­ges, das die­sen ent­hält. Neben­bei kann auch gleich der Intel RST-Trei­ber ein­ge­bun­den wer­den.

Die Trei­ber erhält man z.B. direkt von Intel:
USB3-Trei­ber
Con­trol­ler-Trei­ber

Hier­zu müs­sen fol­gen­de Ord­ner erstellt wer­den:

C:\WIM
C:\WIM\MOUNT
C:\WIM\drivers

In den Ord­ner C:\WIM wird vom Instal­la­ti­ons­me­di­um die boot.wim und install.wim kopiert und in den Ord­ner C:\WIM\drivers anschlie­ßend die Trei­ber (x86 oder x64) extra­hiert. Anschlie­ßend kann die Imple­men­tie­rung erfol­gen. Die­se wird auf­grund der Mount-/Unmount-Vorgänge mit Admi­nis­tra­tor­rech­ten aus­ge­führt.

Für ein 32 Bit Instal­la­ti­ons­me­di­um:

dism.exe /Mount-WIM /WimFile:"C:\WIM\install.wim" /index:1 /MountDir:"C:\WIM\MOUNT"
dism.exe /image:"C:\WIM\MOUNT" /Add-Driver /driver:"C:\WIM\drivers" /ForceUnsigned /recurse
dism.exe /Unmount-wim /mountdir:"C:\WIM\MOUNT" /commit
dism.exe /Mount-WIM /WimFile:"C:\WIM\install.wim" /index:2 /MountDir:"C:\WIM\MOUNT"
dism.exe /image:"C:\WIM\MOUNT" /Add-Driver /driver:"C:\WIM\drivers" /ForceUnsigned /recurse
dism.exe /Unmount-wim /mountdir:"C:\WIM\MOUNT" /commit
dism.exe /Mount-WIM /WimFile:"C:\WIM\install.wim" /index:3 /MountDir:"C:\WIM\MOUNT"
dism.exe /image:"C:\WIM\MOUNT" /Add-Driver /driver:"C:\WIM\drivers" /ForceUnsigned /recurse
dism.exe /Unmount-wim /mountdir:"C:\WIM\MOUNT" /commit
dism.exe /Mount-WIM /WimFile:"C:\WIM\install.wim" /index:4 /MountDir:"C:\WIM\MOUNT"
dism.exe /image:"C:\WIM\MOUNT" /Add-Driver /driver:"C:\WIM\drivers" /ForceUnsigned /recurse
dism.exe /Unmount-wim /mountdir:"C:\WIM\MOUNT" /commit
dism.exe /Mount-WIM /WimFile:"C:\WIM\boot.wim" /index:1 /MountDir:"C:\WIM\MOUNT"
dism.exe /image:"C:\WIM\MOUNT" /Add-Driver /driver:"C:\WIM\drivers" /ForceUnsigned /recurse
dism.exe /Unmount-wim /mountdir:"C:\WIM\MOUNT" /commit
dism.exe /Mount-WIM /WimFile:"C:\WIM\boot.wim" /index:2 /MountDir:"C:\WIM\MOUNT"
dism.exe /image:"C:\WIM\MOUNT" /Add-Driver /driver:"C:\WIM\drivers" /ForceUnsigned /recurse
dism.exe /Unmount-wim /mountdir:"C:\WIM\MOUNT" /commit

Anschlie­ßend wer­den die bei­den modi­fi­zier­ten Datei­en nur noch zurück auf den USB-Stick kopiert.

Debian Minimal-Installation auf Raspberry Pi

Um den Raspber­ry Pi als klei­nen Ser­ver zu benut­zen, sind die vor­ge­fer­tig­ten Images von Raspbi­an über­di­men­sio­niert und im Hin­bli­ck auf Boot­zeit und Grund­aus­las­tung unge­eig­net. Seit meh­re­ren Jah­ren nut­ze ich des­halb das Pro­jekt "Raspbi­an (mini­mal) unat­ten­ded netin­stal­ler", wel­cher ab dem Modell 1B ein­ge­setzt wer­den kann.

Um die aktu­el­len Ker­nel zu nut­zen und auch das Modell 3 zu unter­stüt­zen habe ich das Pro­jekt ent­spre­chend ange­passt. Von der Relea­ses-Sei­te mei­nes Forks kann eine ZIP-Datei her­un­ter­ge­la­den wer­den, des­sen Inhalt ledig­li­ch auf die SD-Kar­te kopiert wer­den muss.

Anschlie­ßend ein­fach die (µ)SD-Karte und ein mit DHCP und Inter­net­ver­bin­dung ver­sor­gen­des Netz­werk­ka­bel anste­cken, Strom­ver­sor­gung anschlie­ßen und nach ca. 15 Minu­ten Instal­la­ti­ons­zeit boo­tet auto­ma­ti­sch ein mini­ma­les, sau­be­res Debi­an auf dem Pi.

Anpas­sun­gen des Instal­la­ti­ons­vor­gangs mit­tels einer installer-config.txt kön­nen ana­log zum Ursprungs­pro­jekt gemacht wer­den.

Man soll­te dar­an den­ken, nach der Instal­la­ti­on mit­tels dpkg-reconfigure locales die Spra­che, dpkg-reconfigure console-data das Tas­ta­tur­lay­out und dpkg-reconfigure tzdata die Zeit­zo­ne fest­zu­le­gen.

OpenWRT für ASUS RT-N16

Was Leis­tung, Sta­bi­li­tät und Zuver­läs­sig­keit betrifft, ver­rich­tet der ASUS RT-N16 auch nach mehr als fünf Jah­ren vie­ler­orts gute Diens­te. Ledig­li­ch einer der Kon­den­sa­to­ren im Bereich der Buch­se für die Span­nungs­ver­sor­gung (vio­let­tes Gehäu­se, 680µF) soll­te prä­ven­tiv gegen einen mit höhe­rer Span­nungs­fes­tig­keit getauscht wer­den.

Doch gera­de für ein Embed­ded-Gerät, das mit 32MB Flash­spei­cher und 128MB RAM ver­hält­nis­mä­ßig üppig aus­ge­stat­tet ist, lohnt es sich, des­sen Leis­tungs­re­ser­ven mit Open­WRT und den dort zur Ver­fü­gung ste­hen­den Pake­ten auch zu nut­zen.

Um sich ein pas­sen­des Image zu bau­en, nutzt man am Bes­ten den Image­Buil­der, mit wel­chem der pro­prie­tä­re und dadurch die höchs­te Leis­tung bereit­stel­len­de SoC/WiFi-Treiber vor­ab inte­griert wer­den kann. Für den ASUS RT-N16 ist die­ser im Ord­ner brcm47xx/generic des jeweils aktu­el­len Open­WRTs zu fin­den.

Ein Image mit Web­in­ter­face baut der Befehl:

make image PROFILE=Broadcom-wl PACKAGES="luci"

Das fer­ti­ge Image mit dem Namen "openwrt-<version>-brcm47xx-generic-squashfs" fin­det sich anschlie­ßend im Unter­ver­zeich­nis ./bin.

 

Kernelupdate und Grub2 auf XEN-VMs

Ein XEN basier­ter vSer­ver hat den gro­ßen Vor­teil, dass eige­ne Ker­nel und Modu­le genutzt wer­den kön­nen.
Stellt der Pro­vi­der VMs jedoch nur mit Grub 1 zur Ver­fü­gung ver­hin­dert die Aus­gangs­kon­fi­gu­ra­ti­on aber unter Umstän­den das Boo­ten neu­e­rer Ker­nels, da "update-grub" die "menu.lst" nicht auto­ma­ti­siert anpas­sen kann.

Im Zuge der Kor­rek­tu­ren darf auch auf Grub 2 migriert wer­den. Hier­bei wer­den die Grub-Ein­trä­ge kom­plett neu gene­riert und sicher­ge­stellt, dass auch Hosts, wel­che Grub 2 nicht selbst­stän­dig laden, ent­spre­chend wei­ter­ge­lei­tet wer­den. Even­tu­el­le Feh­ler­mel­dun­gen, wel­che beim Auf­ruf von "update-grub" auf­tre­ten kön­nen igno­riert wer­den, sofern die jeweils letz­te Aus­ga­be den Erfolg des Befehls anzeigt.

Die fol­gen­den Befeh­le bezie­hen sich auf Debi­an v8.x:

apt-get -y install grub-legacy
cp -pR /boot/grub/ /boot/grub_old
rm -rf /boot/grub/*
rm -rf /boot/xen/*
update-grub
apt-get -y purge pv-grub-menu grub-common grub-legacy grub-pc grub2 grub2-common
apt-get -y install grub-xen
grub-install --target=x86_64-xen
sed -i 's/timeout\t\t5/timeout\t\t0/' /boot/grub/menu.lst
sed -i 's/# groot=(hostdisk\/\/dev\/xvda1)/# groot=(hd0,0)/' /boot/grub/menu.lst
nano /boot/grub/menu.lst

Alle Ker­nel in der Lis­te ent­fer­nen und erset­zen durch:

title Chainload Grub 2
root (hd0,0)
kernel /boot/xen/pvboot-x86_64.elf

Abschlie­ßend Grub 2 fer­tig kon­fi­gu­rie­ren las­sen:

sed -i 's/GRUB_TIMEOUT=5/GRUB_TIMEOUT=0/' /etc/default/grub
update-grub

Nun kann die VM neu gestar­tet wer­den.

Optio­nal:
Wenn gewünscht, kann auch "fstab" ange­passt wer­den, sodass gemäß den Richt­li­ni­en von Debi­an v8 UUIDs als Iden­ti­fier genutzt wer­den. "xvda2" wird im fol­gen­den Bei­spiel als Swap gemoun­tet:

sed -i 's/^\/dev\/xvd/#\/dev\/xvd/' /etc/fstab
sed -i 's/^proc/#proc/' /etc/fstab
echo "# /dev/xvda1" >> /etc/fstab
echo -e "$(blkid /dev/xvda1 -s UUID | awk '{print $2}' | sed 's/\"//g')\t/\t\t$(df -T /dev/xvda1 | grep "^/dev" | awk '{print $2}')\terrors=remount-ro\t0\t1" >> /etc/fstab
echo "# /dev/xvda2" >> /etc/fstab
echo -e "$(blkid /dev/xvda2 -s UUID | awk '{print $2}' | sed 's/\"//g')\tnone\t\tswap\tsw\t\t\t0\t0" >> /etc/fstab

FritzBox VoIP-Anmeldedaten auslesen

Vie­le Anbie­ter geben die Anmel­de­da­ten für die VoIP-Anmel­dung (noch) nicht her­aus. Wur­den die Daten per TR-069 vom Anbie­ter auto­ma­ti­siert in eine Fritz­Box ein­ge­tra­gen, gibt es jedoch eine brauch­ba­re Lösung. Hier­für wird das in der Fritz­Box ent­hal­te­ne Tool "allcf­g­conv" ver­wen­det, das jedoch von AVM in der Funk­tio­na­li­tät beschnit­ten wur­de.
Das Erset­zen der "allcf­g­conv", um den not­wen­di­gen decrypt-Para­me­ter wie­der­her­zu­stel­len wur­de inzwi­schen durch etli­che Ände­run­gen an den Abhän­gig­kei­ten der auf­ge­ru­fe­nen Diens­te deut­li­ch erschwert. Deren Wie­der­her­stel­lung ist sehr zeit­auf­wän­dig.
Die schnells­te und unpro­ble­ma­tischs­te Mög­lich­keit ist der Export der Daten und der Import auf eine mit Firm­ware­stand vor v6.20 down­ge­gra­de­te Fritz­Box. Am Ein­fachs­ten geht dies durch Aus­wahl der Firm­ware und Kom­pi­lie­rung eines ent­spre­chen­den Freetz-Images. Auf die­se Wei­se kann auch bequem der Tel­net-Dae­mon gestar­tet und dort die Daten aus­ge­le­sen wer­den.

Zum Auf­spie­len des Freetz-Images soll­te unter allen Umstän­den die Webo­b­er­flä­che genutzt wer­den, da das "push_firmware"-Tool von Freetz bei man­chen Boxen nicht mehr wie vor­ge­se­hen funk­tio­niert und die Box anschlie­ßend nicht mehr boo­tet. Die­ses Pro­blem lässt sich durch ein pas­sen­des Reco­ver-Tool vom AVM-FTP behe­ben. Doch auch hier gibt es einen Stol­per­stein: Zwar las­sen die Ober­flä­chen der vom Pro­vi­der gelie­fer­ten Fritz­Bo­xen oft kein Bran­ding mehr erken­nen, jedoch ist in der Regel eine "Urla­der-Envi­ron­ment-Varia­ble" gesetzt, durch wel­che das Reco­ver-Tool die Funk­ti­on ver­wei­gert. Im ADAM2-Boot­loa­der kann die­se jedoch gelöscht wer­den. Ein­schrän­kun­gen (auch die TR-069-Kom­pa­ti­bi­li­tät bleibt erhal­ten) konn­te ich kei­ne fest­stel­len.

Vor­ge­hens­wei­se zur Her­stel­lung der Reco­ver-Tool-Kom­pa­ti­bi­li­tät:
Benut­zer­na­me & Pass­wort für den ADAM2-Boot­loa­der: "adam2"

quote GETENV provider   # diesen Wert notieren
quote UNSETENV provider
quote REBOOT

Anschlie­ßend funk­tio­niert das Reco­ver-Tool wie gewünscht.

GitHub Release Notifications

Nach­dem ich immer mehr Pro­jek­te bei Git­Hub ver­fol­ge und ein­set­ze, war der Ein­satz einer auto­ma­ti­schen Benach­rich­ti­gung bei neu­en Ver­sio­nen über­fäl­lig.

Lösun­gen, wie "Sibbell" sind lei­der noch nicht aus­ge­reift oder funk­tio­nie­ren über­haupt nicht. Inzwi­schen set­ze ich "rss2e­mail" ein.

Setzt man hin­ter die URL des Release-Tabs das Suf­fix ".atom", erhält man dadurch die URL, wel­che von "rss2e­mail" ein­ge­le­sen wird und deren Ein­trä­ge — sofern noch nicht ver­sandt — per eMail an den gewünsch­ten Emp­fän­ger geschickt wer­den.
Die Kon­fi­gu­ra­ti­ons­da­tei ist nach der Initia­li­sie­rung unter "~/.config/rss2email.cfg" zu fin­den.

TeamSpeak Passwortwiederherstellung

Team­Speak ist in grö­ße­ren Grup­pen eine prak­ti­sche Alter­na­ti­ve zur VoIP-Kom­mu­ni­ka­ti­on wie sie z.B. auch Sky­pe bie­tet. Hat man eine Instanz im Archiv, zu wel­cher jedoch kei­ne Zugangs­da­ten mehr zur Ver­fü­gung ste­hen, kön­nen die­se leicht wie­der­her­ge­stellt wer­den:
Zunächst ist Team­Speak zu been­den und mit einem tem­po­r­är gesetz­ten Pass­wort zu star­ten:

./ts3server_minimal_runscript.sh serveradmin_password=tempPassword

Anschlie­ßend kann man sich per telnet localhost 10011 mit der Ser­ver­Que­ry-Schnitt­stel­le ver­bin­den und das Pass­wort zurück­set­zen:

login serveradmin tempPassword
clientsetserverquerylogin client_login_name=serveradmin

Das neu gene­rier­te Pass­wort wird in der Kon­so­le ange­zeigt.


Benö­tigt man auch einen Admin-Token, bekommt man die­sen mit fol­gen­den Befeh­len:

use sid=1
tokenadd tokentype=0 tokenid1=6 tokenid2=0

Der neu gene­rier­te Token für die Ser­ver­grup­pe "Ser­ver Admin (6)" wird in der Kon­so­le ange­zeigt.


Man soll­te nicht ver­ges­sen, Team­Speak anschlie­ßend ohne den Pass­wort-Para­me­ter neu zu star­ten.

Abstürze bei Silverlight in Vollbild-Modus

Nach­dem eini­ge Brow­ser den Sup­port von NPA­PI-Erwei­te­run­gen nach und nach abstel­len, wer­den zum Anse­hen von Video­st­reams wie­der ver­mehrt Flash-Play­er ein­ge­setzt.
Bei "Ama­zon Instant Video" ist im Flash-Play­er-Modus jedoch kein HD mög­li­ch, wes­halb sich der auf Win­dows-Sys­te­men in der Regel vor­in­stal­lier­te Inter­net Explo­r­er als Ersatz-Brow­ser für das Fil­me­schau­en anbie­tet.

Hier­bei gibt es jedoch ein Pro­blem: Ver­lässt man meh­re­re Male den Voll­bild­mo­dus, erscheint ein Popup von Sil­ver­light, das jedoch auf kei­ne Ein­ga­be reagiert und zum Absturz des Brow­sers führt. Eine Neu­in­stal­la­ti­on von Sil­ver­light bringt hier­bei kei­ne Abhil­fe.
Um die­ses Pro­blem zu lösen, ist ledig­li­ch die fol­gen­de Anpas­sung in der Regis­try vor­zu­neh­men:

Schlüs­sel:

HKEY_CURRENT_USER\Software\AppDataLow\Software\Microsoft\Silverlight\Permissions\http://ecx.images-amazon.com:80

DWORD-Wert:

"StaysInFullScreenWhenUnfocused"=dword:00000011

Redmine mit GIT auf Debian-Server

Red­mi­ne ist wohl eines der kom­for­ta­bels­ten und mäch­tigs­ten Issue-Tracking-Sys­te­me im Open-Sour­ce-Bereich.
Hier möch­te ich zei­gen, wie man es auf einem Debi­an-Ser­ver mit nginx als Web­ser­ver instal­liert und ein­rich­tet:

Mit Red­mi­ne 3.0.0 muss das "Red­mi­ne Boot­strap Kit plugin" v0.2.0 und das "Red­mi­ne Git Hos­ting Plugin" v1.0.1 oder höher ver­wen­det wer­den.
Hier­zu sind gege­be­nen­falls Anpas­sun­gen an den Depen­den­ci­es der Gemfiles nötig, wel­che sich aus den Hin­wei­sen der Bund­ler-Instal­la­ti­ons­pro­ze­du­ren erge­ben.

Tipp:
https://github.com/jbox-web/grack.git klonen und in plugins/redmine_git_hosting/Gemfile ändern: "gem 'gitlab-grack', path: '/opt/redmine/plugins/redmine_git_hosting/grack', require: 'grack'"
In plugins/redmine_git_hosting/grack/grack.gemspec "gem.add_dependency("rack", "~> 1.4.1")" auskommentieren.
In plugins/redmine_git_hosting/Gemfile "gem 'redcarpet', '~> 2.3.0'" auskommentieren.
apt-get install apt-transport-https ca-certificates
echo "deb https://oss-binaries.phusionpassenger.com/apt/passenger wheezy main" > /etc/apt/sources.list.d/passenger.list
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
apt-get update

apt-get remove nginx nginx-full nginx-light nginx-naxsi nginx-common
apt-get install sudo ssh make g++ bzip2 zip unzip libssl-dev nginx-extras passenger mysql-server libmysqlclient-dev ruby ruby-dev git git-core gitolite imagemagick libmagickcore-dev libmagickwand-dev libicu-dev

nano /etc/nginx/nginx.conf
--------------------
(Prozessanzahl limitieren:         )
(worker_processes 1;               )
(worker_connections 1024;          )
(passenger_max_instances_per_app 2;)

Auskommentieren:
passenger_root ...;
passenger_ruby ...;
-----------------------------
service nginx restart

adduser --system --shell /bin/bash --gecos 'Git Administrator' --group --disabled-password --home /opt/gitolite git
adduser --system --shell /bin/bash --gecos 'Redmine Administrator' --group --disabled-password --home /opt/redmine redmine

su redmine
ssh-keygen -t rsa -N '' -f ~/.ssh/redmine_gitolite_admin_id_rsa
exit
dpkg-reconfigure gitolite
------------------------------------------------------------------
user: git
repos path: /opt/gitolite
admin ssh-key: /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub
------------------------------------------------------------------
su redmine
ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa /opt/redmine/.ssh/id_rsa
ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub /opt/redmine/.ssh/id_rsa.pub
exit
visudo
--------------------------------------
# temp - *REMOVE* after installation
redmine    ALL=(ALL)      NOPASSWD:ALL

# redmine gitolite integration
redmine    ALL=(git)      NOPASSWD:ALL
git        ALL=(redmine)  NOPASSWD:ALL
--------------------------------------
sudo su - redmine
cd ~
wget http://www.redmine.org/releases/redmine-x.x.x.tar.gz
tar zxf redmine-x.x.x.tar.gz
mv redmine-x.x.x/* .
rm -Rf redmine-x.x.x
rm redmine-x.x.x.tar.gz

mysql -u root -p -v -e "CREATE DATABASE redmine CHARACTER SET utf8;
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'redmine';
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';"

cd /opt/redmine/config
cp database.yml.example database.yml
cp configuration.yml.example configuration.yml
nano database.yml
nano configuration.yml

cd ~
mkdir public/plugin_assets
sudo gem install bundler
bundle install --without development test postgresql sqlite
rake generate_secret_token
RAILS_ENV=production rake db:migrate
RAILS_ENV=production rake redmine:load_default_data

cd ~/plugins
git clone https://github.com/jbox-web/redmine_bootstrap_kit.git
cd ~/plugins/redmine_bootstrap_kit
git checkout x.x.x
git clone https://github.com/jbox-web/redmine_git_hosting.git
cd ~/plugins/redmine_git_hosting
git checkout x.x.x

ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa /opt/redmine/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa
ln -s /opt/redmine/.ssh/redmine_gitolite_admin_id_rsa.pub /opt/redmine/plugins/redmine_git_hosting/ssh_keys/redmine_gitolite_admin_id_rsa.pub

sudo su - git
sed -i 's/$GL_GITCONFIG_KEYS = ""/$GL_GITCONFIG_KEYS = ".*"/g' /opt/gitolite/.gitolite.rc
exit

cd ~
git clone git@localhost:gitolite-admin.git
cd gitolite-admin/
echo "
repo    @all
        RW+    = admin" >> conf/gitolite.conf
git commit -m 'Automatic Repository Initialization' conf/gitolite.conf
git push
cd ~
rm -rf gitolite-admin

cd ~
bundle install --without development
RAILS_ENV=production rake redmine:plugins:migrate
exit

su root
nano /etc/nginx/sites-available/default
---------------------------------------
Hinzufügen:
        location ~ ^/redmine(/.*|$) {
                alias /opt/redmine/public$1;
                passenger_base_uri /redmine;
                passenger_app_root /opt/redmine;
                passenger_document_root /opt/redmine/public;
                passenger_enabled on;
        }
---------------------------------------
nginx -s reload

visudo
-------------------------------------------------
Temp-Eintrag entfernen: "redmine    ALL=(ALL)..."
-------------------------------------------------