Downloadprogramma's instellen als services

Door CodeCaster op zondag 5 juni 2011 12:50 - Reacties (21)
Categorie: Media, Views: 8.452

In een eerder blog schreef ik al over de geweldige downloadprogramma's SABnzbd+, μTorrent, Sick Beard en Couch Potato. In deze tweede blog over dit onderwerp wil ik uitleggen hoe je services maakt van deze applicaties. Dit was eerder onderdeel van de originele post, maar dan was die wel erg groot geworden. Daarnaast is het maken van services optioneel; wanneer je dit niet doet werkt alles net zo goed. Er is echter één voordeel: ze starten vanzelf, je hoeft dus niet meer in te loggen op je computer na een herstart van het systeem.

Inleiding
Wat is een service eigenlijk? Een service is een programma zonder GUI, wat op de achtergrond draait. De programma's die je bij het volgen van de vorige blog hebt geïnstalleerd, draaien namelijk pas wanneer ze al dan niet expliciet worden opgestart onder jouw profiel, dus na het inloggen van een gebruiker. Omdat mijn HTPC door Windows Update regelmatig herstart, draaien al deze programma's daarna niet meer, totdat ik inlog. Toegegeven, dit is ook te omzeilen door automatisch te laten inloggen en de programma's in Opstarten te zetten, maar dat is uiteraard een minder nette oplossing.

Als dat voor jou wel afdoende is, dan is deze blog helaas niet voor jou bedoeld.


Gebruikersaccount
Als eerste dient een aparte gebruiker aangemaakt te worden die de services gaat draaien. Start hiervoor de local user manager (lusrmgr.msc) op en voeg een account toe waarvan het wachtwoord niet verloopt en die niet mag aanloggen. Op een Home-OS bestaat dit commando niet, maar moet je dat doen via "control userpasswords2". Maak in dat geval een gebruiker van het type Gastgebruiker aan. Zie hier hoe je die gebruiker vervolgens verbergt op het "Welkom-scherm".


Applicaties
We hebben nu een viertal applicaties die als service opgestart moeten worden (mijn HTPC heeft een 32-bits CPU en dito installatie, Program Files heet "Program Files (x86)" als je een 64-bits OS draait en de 32-bits versies van deze programma's draait):
  • C:\Program Files\SABnzbd\SABnzbd.exe
  • C:\Program Files\SickBeard\SickBeard.exe
  • C:\Program Files\uTorrent\uTorrent.exe
  • C:\Program Files\CouchPotato\couchpotato.exe

SABnzbd 0.6.0
SABnzbd komt sinds versie 0.6.0 met een eigen service-installatie, maar deze implementatie en de documentatie daarvan zuigt op z'n zachtst gezegd nogal. In de installatiehandleiding wordt de hele <path>-parameter bijvoorbeeld in alle talen doodgezwegen. Hem weglaten levert output noch een service op, waarbij ik dus aanneem dat het pad naar de config-file moet worden opgegeven (van de wiki: -f: The name of the configuration file). Vervolgens meldt de SABnzbd-service.exe:
Don't forget to install the Service SABnabd-helper.exe too!
Ja, euh, hoe? En wacht, wat? Een service om een service te starten? Ik krijg hier een beetje een Inception-gevoel bij. Dat gaan we dus even lekker niet op deze manier doen.


Services bouwen
Hoe dan wel? Om services te maken van applicaties die hier niet voor geschikt zijn (zoals de overige drie van de bovengenoemde vier...) moet je SrvAny.exe gebruiken. Dit bestand bevindt zich in de Windows Server 2003 Resource Kit Tools. Download de kit, negeer de compatibiliteitswaarschuwing en installeer het naar de gewenste directory.

Services maak je vervolgens aan via het instsrv-commando, wat als administrator uitgevoerd moet worden. Start een elevated command prompt door op Start te klikken, "cmd" in te tikken en te rechtsklikken op cmd.exe en te kiezen voor "Als administrator uitvoeren".

Voer de volgende code uit om de services en hun bijbehorende dependencies aan te maken:
cd "C:\Program Files\Windows Resource Kits\Tools"
instsrv SABnzbd "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
sc config SABnzbd depend= Tcpip
instsrv uTorrent "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
sc config uTorrent depend= Tcpip
instsrv SickBeard "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
sc config SickBeard depend= Tcpip
sc config SickBeard depend= SABnzbd
sc config SickBeard depend= uTorrent
instsrv CouchPotato "C:\Program Files\Windows Resource Kits\Tools\srvany.exe"
sc config CouchPotato depend= Tcpip
sc config CouchPotato depend= SABnzbd
sc config CouchPotato depend= uTorrent


De dependencies op elkaar doen verder vrij weinig (srvany vindt alles best en rapporteert al (te) snel dat een service draait) en is slechts toegevoegd voor de volledigheid, maar de afhankelijkheid van TCP/IP is wel wenselijk zodat de programma's niet te vroeg worden gestart.

Stel nu bij drie van de vier zojuist aangemaakte services in dat het zojuist aangemaakte account moet worden gebruikt om de services op te starten. Dit geldt voor SABnzbd+, Sick Beard en Couch Potato. Alleen μTorrent gaan we anders doen, zie daarvoor even verderop. Eigenschappen van services veranderen doe je door "services.msc" uit te voeren, en bij de eigenschappen van de betreffende service op het tabblad Aanmelden de aangemaakte gebruikersnaam en wachtwoord te plakken.


SABnzbd service credentials


Daarnaast moet op het tabblad "Algemeen" worden aangegeven dat de service automatisch moet worden gestart.

Geef de DownloadService (zoals de gebruiker bij mij heet) vervolgens Full Control op de vier mappen in Program Files, zodat zaken als caching en logging blijven werken, en je via de webinterface ook de configuratie-instellingen kunt wijzigen. De ultieme oplossing zou natuurlijk zijn om per service een account aan te maken, maar dat gaat in mijn ogen wat ver. Geef vervolgens het account ook rechten op de downloadfolders die je hebt ingesteld in de diverse programma's, zodat ze het recht behouden om te schrijven en om bestanden na het downloaden te verwijderen. issues die optreden na het "verservicen" van deze applicaties hebben negen van de tien keer met rechten te maken. Controleer deze dus goed.

Zorg ook dat deze gebruiker volledige toegang heeft tot de directory waar je je beeldmateriaal opslaat, in mijn geval E:\Video.


Configuratie
Vervolgens moeten per service enkele instellingen worden aangepast, omdat nu enkel de srvany.exe wordt opgestart zonder parameters.


SABnzbd
Start regedit en blader naar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SABnzbd. Voeg hier de sleutel Parameters toe, en maak de volgende tekenreeksen aan in die folder, alles zonder de aanhalingstekens:
"AppDirectory", waarde: "C:\Program Files\SABnzbd\"
"Application", waarde: "C:\Program Files\SABnzbd\sabnzbd.exe"
"AppParameters", waarde: "-d"
Dat ziet er dus als volgt uit:
SABnzbd srvany.exe regedit

De -d(aemon)-vlag zorgt ervoor dat de .ini uit de installatiedirectory wordt gelezen, dat er geen GUI of prompt worden gestart en dat er geen bezoekje met de browser aan de gestarte SABnzbd wordt gebracht.

Voor het starten moet je de ini, die zich standaard bevindt in de directory %localappdata%\SABnzbd\, dan dus ook even verplaatsen naar de installatiedirectory in Program Files.


Sick Beard
Blader in de register-editor nu naar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SickBeard. Voeg hier de sleutel Parameters toe, en maak de volgende tekenreeksen aan in die folder, alles zonder de aanhalingstekens:
"AppDirectory", waarde: "C:\Program Files\SickBeard\"
"Application", waarde: "C:\Program Files\SickBeard\SickBeard.exe"

μTorrent
Ga in regedit nu naar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\uTorrent. Voeg hier de sleutel Parameters toe, en maak de volgende tekenreeksen aan in die folder, alles zonder de aanhalingstekens:
"AppDirectory", waarde: "C:\Program Files\uTorrent\"
"Application", waarde: "C:\Program Files\uTorrent\uTorrent.exe"
Het programma μTorrent is qua service een verhaal apart. Deze slaat zijn momenteel actieve torrents namelijk op in %appdata%\μTorrent. Wanneer je deze informatie wil meenemen, moet je deze directory verplaatsen naar de directory AppData\Roaming van het DownloadService-account. Dan kun je echter niet meer je downloads beheren door als de ingelogde gebruiker μTorrent op te starten, want dan krijg je een lege downloadlijst te zien (de huidige downloads zijn anders immers verplaatst naar de profielmap van de DownloadService, terwijl je niet als die gebruiker bent ingelogd). Ik laat de μTorrent-service dan ook onder mijn eigen gebruikersaccount opstarten (te configureren via services.msc, zie ook eerder), zodat ik door het opstarten van de executable op de HTPC m'n downloads zelf kan beheren buiten de webinterface om. Die laatste mist namelijk nogal wat mogelijkheden met betrekking tot onder andere het verplaatsen van data.


Couch Potato
Ga weer naar regedit en blader naar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CouchPotato. Voeg hier de sleutel Parameters toe, en maak de volgende tekenreeksen aan in die folder, alles zonder de aanhalingstekens:
"AppDirectory", waarde: "C:\Program Files\CouchPotato\"
"Application", waarde: "C:\Program Files\CouchPotato\CouchPotato.exe"

Testen
Zorg ervoor dat alle geconfigureerde applicaties niet meer draaien. Sluit SABnzbd+, Sick Beard, Couch Potato en μTorrent dus netjes af wanneer een van deze nog actief was.

Om te controleren of alle services starten is het commando "net start <servicenaam>" genoeg. Doe dit vanuit de elevated command prompt (de cmd die als Administrator wordt uitgevoerd), en start alle vier de services. Wanneer dit zonder fouten gepaard gaat en de webinterfaces zijn weer bereikbaar, dan is de installatie geslaagd! Herstart de computer om te controleren of de services ook automatisch worden opgestart.

Het enige euvel is dat de applicaties niet "netjes" worden afgesloten bij een herstart van de computer. Dit zou in principe niet uit mogen maken, maar het kan veroorzaken dat een download halverwege afgebroken wordt. Deze zou echter vanzelf weer verder moeten gaan wanneer het systeem weer operationeel is.


Klaar!
Dat was 'm alweer! Alle programma's draaien nu als service en zijn klaar om te worden gekoppeld middels Apache... meer daarover in m'n volgende blog!



http://codecaster.nl/got/rmb/star1.pnghttp://codecaster.nl/got/rmb/star2.pnghttp://codecaster.nl/got/rmb/star3.pnghttp://codecaster.nl/got/rmb/star4.pnghttp://codecaster.nl/got/rmb/star5.pnghttp://codecaster.nl/got/rmb/stats.gif

Volgende: Codekwaliteit: Single Entry, Single Exit en methode-omvang 06-'11 Codekwaliteit: Single Entry, Single Exit en methode-omvang
Volgende: Automagisch series en films binnenhengelen 05-'11 Automagisch series en films binnenhengelen

Reacties


Door Tweakers user sinner2stroke, zondag 5 juni 2011 14:19

Zeer fijne info. Ik heb vanavond weer iets te doen!

Door Tweakers user pin_point, zondag 5 juni 2011 14:47

Handige info!, ik wacht even op de koppeling met appache, klinkt interessant.
quote: toevallig een typo gemaakt?
μTorrent
Ga in regedit nu naar HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CouchPotato. Voeg
of ga ik nu weer ergens over roepen zonder dat ik er verstand van heb :+

[Reactie gewijzigd op zondag 5 juni 2011 14:48]


Door Tweakers user CodeCaster, zondag 5 juni 2011 14:49

Klopt helemaal, bedankt. :)

Door Tweakers user i-chat, zondag 5 juni 2011 15:08

het 'welbekende utorrent sucks probleem :D ... jammer dat er geen transmission voor windows is... die heeft namelijk stukken betere remote beheermogelijkheden.

verder een leuke blogpost.. - het 'nadeel' aan windows als home server os vind ik dat er geen webbased 'management tool' is zoals bijv webmin, of zelfs maar WHS

[Reactie gewijzigd op zondag 5 juni 2011 15:10]


Door Tweakers user Jejking, zondag 5 juni 2011 17:39

Heeeeeeeeee........ wil ik eens een +5 geven, mag het niet ome CodeCaster :/

Bij deze dan, goeie blog :w

Door Tweakers user CodeCaster, zondag 5 juni 2011 17:44

Waarom mag dat niet? Van mij wel hoor. :P

@i-chat: op zich valt μTorrent wel mee hoor, maar een remote pc-beheer-tool met een webinterface zou sowieso wel leuk zijn inderdaad.

[Reactie gewijzigd op zondag 5 juni 2011 17:45]


Door Tweakers user upje, zondag 5 juni 2011 19:16

Ik gebruik SABnzbd 0.61; deze installeert zonder gedoe als service. Niets ingewikkelds aan. Versie 0.62 is overigens ook al uit.

Door Tweakers user CodeCaster, zondag 5 juni 2011 19:17

Ben je niet in de war met "Opstarten na systeem start"? Dat is géén service, maar een vermelding in Run, te zien in msconfig. Dat werkt dus pas ná het inloggen op Windows.

[Reactie gewijzigd op zondag 5 juni 2011 19:18]


Door Tweakers user upje, zondag 5 juni 2011 19:19

Je hebt helemaal gelijk. :)

Het netto resultaat is voor mij als gebruiker wel hetzelfde overigens, of niet dan?

Door Tweakers user CodeCaster, zondag 5 juni 2011 19:21

Afgezien van het moeten inloggen na een herstart en dat 'ie als service (bij voorkeur) onder een andere gebruiker draait: ja. :P

[Reactie gewijzigd op zondag 5 juni 2011 19:21]


Door Tweakers user upje, zondag 5 juni 2011 19:24

Tja, als ik gebruik maak van mijn computer ben ik meestal wel ingelogd ja ;) .
Maar op een server misschien niet zo handig. 8)7

Door Tweakers user Killemov, zondag 5 juni 2011 20:39

i-chat schreef op zondag 05 juni 2011 @ 15:08:
het 'welbekende utorrent sucks probleem :D ... jammer dat er geen transmission voor windows is... die heeft namelijk stukken betere remote beheermogelijkheden.

verder een leuke blogpost.. - het 'nadeel' aan windows als home server os vind ik dat er geen webbased 'management tool' is zoals bijv webmin, of zelfs maar WHS
Even goed zoeken https://forum.transmissionbt.com/viewtopic.php?t=6249 . Alleen officieel is er dus (nog) geen transmission voor Windows.

uTorrent heeft wel een web-ui... Weer even zoeken dus.

[Reactie gewijzigd op zondag 5 juni 2011 20:40]


Door Tweakers user akimosan, zondag 5 juni 2011 21:18

Goede post. Zelf heb ik dit al enige tijd ingesteld staan op mijn server. Zo fijn om gewoon op een energie zuinige server gewoon al je downloads mooi automatisch te laten lopen. Alles ook qua storage mooi geconsolideerd, ideaal. Enige probleem is dat het downloaden zo sneller gaat dan het kijken.

Zelf heb ik ook nog mirroring naar een andere server middels DFS-R ingesteld, zo dat ik mijn films en series ook kan kijken als ik bij mijn broer ben (of hij kijkt ze natuurlijk) ;)

[Reactie gewijzigd op zondag 5 juni 2011 21:18]


Door Tweakers user himlims_, maandag 6 juni 2011 16:28

interessante post om te lezen

wat werkt windows complex :X

Door Tweakers user Torched, dinsdag 7 juni 2011 17:53

uTorrent heeft wel iets vaneen webinterface. Alleen die zuigt ook ballen en voelt idd gelimiteerd.
Het zorgt er voor dat ik liever even RDP en dan utorrent bij werk dan dat ik via die webinterface ga klooien.

Door Tweakers user i-chat, woensdag 8 juni 2011 19:34

Killemov schreef op zondag 05 juni 2011 @ 20:39:
[...]

Even goed zoeken https://forum.transmissionbt.com/viewtopic.php?t=6249 . Alleen officieel is er dus (nog) geen transmission voor Windows.

uTorrent heeft wel een web-ui... Weer even zoeken dus.
even goed lezen en je zit / weet dat wintransmission vol zit met buggs en al sins 2008 niet meer wordt onderhouden ... dan kun je nog beter ABC gebruiken is wat ouder, maar werkt native redelijk onder windows (en heeft ook een web-service... het nadeel lijkt dat ie toch een hoop features mist...

Door Tweakers user TeeDee, woensdag 8 juni 2011 23:06

Hmm, heb even het e.e.a. uitgetest en kom toch iets onverwachts tegen. Ik heb een Windows 2008 servertje met SABnzbd en Sickbeard. Op de 2008 heb ik een drive gemapped (persistent: yes) naar mijn Popcorn hour. Zodra ik Sickbeard als Service run, met alle mogelijke logons (ook Administrator etc.), dan wordt de mapping naar mijn network drive niet gezien. Stop ik de service en start ik Sickbeard als (Terminal server) user dan gaat dit wel prima.

Enig idee? Ik weet bijna zeker dat dit een rechten issue is, maar toch. Geen idee hoe ik 't gefixed krijg.

[Reactie gewijzigd op woensdag 8 juni 2011 23:07]


Door Tweakers user CodeCaster, donderdag 9 juni 2011 08:21

Volledig UNC-pad gebruiken, een service heeft die mappings naar schijfletters niet. :)

Door Tweakers user TeeDee, donderdag 9 juni 2011 09:13

CodeCaster schreef op donderdag 09 juni 2011 @ 08:21:
Volledig UNC-pad gebruiken, een service heeft die mappings naar schijfletters niet. :)
*Kuch* niet bij stil gestaan. Thanks, vanavond meteen proberen!

Door Riky404, woensdag 7 december 2011 14:42

Beste CodeCaster,

Dank voor de mooie tutorial ;) Het was ingewikkeld, maar het is me wel gelukt om alles werkend te krijgen :P

Wat ik me wel afvraag.. er draaien ineens wel heel veel processen net na een herstart. Waaronder 2 browsers, 3x srvany, en 2x CouchPotato. Zie: http://piclair.com/data/eiv8m.jpg

Heb je enig idee hoe ik dat aantal kan verminderen? Ik geloof niet dat al die browser processen nodig zijn namelijk :)

Door Tweakers user Apocal1pse, dinsdag 13 december 2011 21:52

Koning deze blog.. Komt goed van pas deze informatie.. Thnx !

Reageren is niet meer mogelijk