Bij het opzetten van een shared hosting omgeving is het best ingewikkeld om alle services correct te configureren en met elkaar te laten samenwerken. Gelukkig hebben de makers van Virtualmin een shell script ter beschikking gesteld om dit zonder moeite voor elkaar te krijgen. We kunnen eenvoudigweg dit script downloaden en uitvoeren om alles voor elkaar te krijgen. Het enige dat daarna nog rest is het doorlopen van een wizard voor de initiële configuratie.

Webmin/Usermin/Virtualmin installeren.

Volg deze stappen om de benodigde software te installeren:

  1. Uiteraard hebben we voor het installeren van de software root privileges nodig, dus geven we het commando:
    sudo su
  2. Eerst downloaden we het instalatie script met het commando:
    wget http://software.virtualmin.com/gpl/scripts/install.sh
  3. We moeten vervolgens tegen Linux operating systeem vertellen dat dit script uitgevoerd mag worden met het commando:
    chmod +x install.sh
  4. We starten nu het script met het commando:
    ./install.sh

  1. Nadat het script is gestart wordt er een mededeling getoond over het script en de ondersteunde operating systems. Geef y en <Enter>. We draaien immers Ubuntu 20.04, en dat wordt door het script ondersteund.
  2. Hierna gaat het installatiescript verder. Dit kan, afhankelijk van de snelheid van je serverlaptop en je internet lijn tussen de 10 en 20 minuten duren.

  1. Als het installatie script gereed is verschijnt de mededeling zoals in het laatste (rechtse) screenshot hierboven:
    Installation complete!
    If there were no errors above, Virtualmin should be ready
    to configure at https://webserver.thuis.net:10000 (or https://192.168.1.10:10000).
    You'll receive a security warning in your browser on your first visit.
  2. Maar vóórdat we de post-installation wizard starten gaan we eerst nog een aantal PHP modules installeren die je voor de meeste websites nodig hebt en, als je denkt dat je dat later nodig hebt, ook PostgreSQL. Dit gaat met het commando:
    apt install php-curl php-zip php-gd php-xmlrpc php-intl php-mbstring php-soap php-ldap perl rrdtool librrds-perl sysstat php-pgsql postgresql postgresql-contrib

  1. Als laatste herstarten we de server.Hiervoorgeven we commando:
    shutdown -r now

De post-installation wizard.

Nadat de server is herstart openen we een web browser en gaan naar:
https://webserver.thuis.net:10000 of naar https://192.168.1.10:10000
We melden hier aan met administrator en het bijbehorende wachtwoord. Je kunt nu door op “Next”te klikken de “Post-Installation Wizard” starten waar je een aantal vragen moet beantwoorden en steeds met “Next” naar de volgende vraag gaat. Klik op Next om de Post-Installation Wizard te starten en geef volgende antwoorden:

  1. “Preload Virtualmin libraries?” Yes
  2. “Run email domain lookup server?” Yes
  3. Klik “Next”.

  1. “Enable virus scanning with ClamAV?” Yes
  2. Klik “Next”.
  3. “Run SpamAssassin server filter?” Yes
  4. Klik “Next”.
  5. “Run MySQL database server?” Yes
  6. “Run PostgreSQL database server?” Yes
  7. Klik “Next”.

  1. “Set MySQL password” Vul een wachtwoord en onthoud dit!
  2. Klik “Next”.
  3. “MySQL configuration size” Leave default settings - Medium system (512M)
  4. Klik “Next”.
  5. “Primary nameserver” webserver.thuis.net (de fully qualified name van de server)
  6. Laat de checkbox voor “Skip check for resolvability” leeg
  7. Klik “Next”.

  1. “Password storage mode” Store plain-text passwords
  2. Klik “Next”.
  3. “Setup default virtual server” No, thanks.
  4. “Enable SSL on default server” No.
  5. Klik “Next”.
  6. In het scherm dat nu verschijnt staat de mededeling:
    “Virtualmin post-installation configuration is now complete”.
    Klik weer op “Next”.

  1. Klik “Re-check and refresh configuration”.
    Nu wordt gecontroleerd of alles correct geconfigureerd is.
    Als het goed is staat er ergens in het scherm “... your system is ready for use by Virtualmin.”
  2. Klik op Return to virtual servers list.

 

Webminstats installeren.

Webminstats is een extra module die je in Webmin kan installaren, en die wat extra statistieken geeft over de server. Je hebt deze module niet persé nodig, maar soms kan wat extra informatie handig zijn.

  1. Download het .tgz bestand van de laatste versie van webminstats van:
    https://sourceforge.net/projects/webminstats/files/Sysstats/
  2. Ga, om dit pakket te installeren, in het Webmin scherm naar “Webmin” ==> “Webmin Configuration” en klik op de “Webmin Modules” tegel.
  3. Selecteer onder “Install from” de radiobutton “From uploaded file”, klik op de paperclip daarachter en selecteer het .tgz bestand dat je zojuist hebt ge-download.
  4. Selecteer bij “Grant access to” de radiobutton voor “Grant access for all webmin users” en klik op de “Install Module” button.
  5. Na de installatie verschijnt de module als een nieuwe menu optie in het Webmin scherm als “System” ==> “Historic System Statistics”.

 

Forwarders voor de BIND DNS Server.

De webserver die we nu hebben ingericht heeft een eigen DNS server voor “eigen gebruik”. Uiteraard weet deze eigen DNS server alleen iets van de hosts die op de eigen server worden geconfigureerd. Om ervoor te zorgen dan hij ook andere domeinen kan vinden moeten we zogenaamde “DNS Forwarders” configureren. Dit zijn andere DNS servers waar onze DNS server de dingen kan vragen die hijzelf niet weet.

  1. Ga in het Webmin scherm naar “Servers” ==> BIND DNS Server” en klik op de “Forwarding and Transfers” tegel.
  2. Vul bij “Servers to forward queries to” de volgende IP adressen in:
    8.8.8.8 en 8.8.4.4
    Dit zijn de Google DNS servers.
  3. klik op de “Save” button.

 

Server Templates en Account Plans voor virtual hosts.

De virtual hosts die je kunt aanmaken voor shared web hosting worden gemaakt aan de hand van “Server Templates” en “Account Plans”. In de Server Templates staat een blauwdruk van hoe zo’n virtual host wordt ingericht en geconfigureerd, terwijl in Account Plans wordt vastgelegd wat de beheerder van een virtual host wel of niet mag en hoeveel resources hij mag gebruiken.

Server Template.

De server template bepaalt hoe een virtual host “in elkaar wordt gezet” wanneer we die aanmaken. Je kunt verschillende Server Templates maken voor verschillende soorten websites. Denk b.v. aan een template voor een normale webserver, en een andere template voor b.v. een proxy server of een server die hoofdzakelijk gebruikt wordt voor webmail. We gaan in elk geval een Server template voor een normale webserver maken om mee van start te gaan. Andere Server Templates komen aan bod in de betreffende artikelen waar ze gebruikt gaan worden voor het aanmaken van virtual hosts voor speciale doeleinden.

  1. Ga in het Virtualmin scherm naar “System Settings” ==> “Server Templates” en klik op “Create a template from default settings”.
  2. Vul bij “Template name” de naam “Web Server Settings” in, selecteer “Yes” bij “Initially selected template for top-level servers?” en klik op “Create”. De template “Web Server Settings” verschijnt nu in de lijst.
  3. Klik in de Server templates lijst op “Web Server Settings” die je zojuist hebt aangemaakt en selecteer in de dropdown box “Administrator’s Webmin Modules”.
  4. Scroll helemaal omlaag en selecteer “Yes” bij “AWstats Reporting (for viewing reports)” en bij “Virtualmin DAV (for managing shares)” en klik vervolgens weer op “Save”.

Account plans

In een account plan wordt vastgelegd welke opties de “eigenaar” van een virtual host heeft binnen Webmin/Virtualmin en hoeveel resources (b.v. hoeveel schijfruimte) hij mag gebruiken voor de virtual host. Wanneer je alleen je eigen website op deze server wil hosten hoef je meer 1 account plan aan te maken waarin je umlimited resources toestaat. Wanneer je van plan bent om ook anderen toe te staan hun site op jouw server te hosten is het verstandig om in aparte account plans vast te leggen hoeveel resources ze mogen gebruiken. Bij het aanmaken van de virtual host geef je dan aan welk account plan er wordt gebruikt. Ook kun je besluiten om verschillende account plans te maken voor verschillende soorten virtual hosts. Je kunt dan verschillende account plans aanmaken voor websites van verschillende grootte, maar b.v. ook verschillende aparte account plans voor webmail servers van verschillende grootte. Hierbij moet wel worden opgemerkt dat voor het thuis hosten van een mail server nog een aantal extra hobbels moet worden genomen, maar dat wordt in aparte artikelen uitgelegd.

We beginnen in elk geval met het aanmaken van een “Unlimited Webserver Plan” voor eigen gebruik en, als je dat wil, een aantal plans voor websites van verschillende grootte.

  1. Ga in het Virtualmin scherm naar “System Settings” ==> “Account Plans”, klik op het “Default Plan”, en vervolgens op de “Clone” button.
  2. Maak onder “Basic plan details”de volgende aanpassingen:
    • Vul bij “Plan name” in: “Unlimited Webserver Plan”.
    • Kies bij “Quota for entire server” en bij “Quota for server administrator user” voor in: “Unlimited”.
    • Kies bij “Limit on number of virtual servers” voor “Unlimited”.
    • Kies bij “Can rename domains?” voor “No”.
    • Kies bij “Alow sub-servers not under this domain?” voor “No”.
    • Kies bij “Allow sub-servers under other user's domains?” voor “No”.

  1. Expand “Allowed virtual server features” en kies bij “Default available features” voor “Selected below”.
  2. Activeer hieronder de alle checkboxes BEHALVE “ProFTPD virtual FTP” en “PostgreSQL database”. Ook zonder het activeren van ProFTPD virtual FTP kan de “eigenaar” van de site deze met FTP benaderen en in de meeste gevallen heb je PostgreSQL niet nodig.
    (Je kunt dit overigens tijdens het aanmaken van de site altijd nog aanpassen, maar het bovenstaande zal in verreweg de meeste gevallen volstaan.)
  3. Expand “Allowed capabilities” en kies bij “Default editing capabilities” voor “Selected below...”
  4. Activeer de volgende checkboxes:
    • “Can edit virtual server”.
    • “Can manage aliases”.
    • “Can install scripts”.
    • “Can select PHP versions”.
    • “Can manage users”.
    • “Can manage databases”.
    • “Can edit website redirects”.
    • “Can edit website options”.
    • “Can change domain’s password”.
    Ook deze opties kan je tijdens het aanmaken van de site nog aanpassen, maar dit zijn de meest gangbare opties.
  5. Klick op de “Create” button.

Je kunt in principe zoveel account plans aanmaken als je wil. Wanneer je ook wil toestaan dat anderen hun site op jouw server hosten is het verstandig om daarvoor dan andere account plans aan te maken waarin je de toegestane bronnen (schijfruimte, bandbreedte, enz.) wat beperkt. Hiermee voorkom je dat anderen je schijfruimte helemaal voor zichzelf gebruiken of dat je internet verbinding verstopt raakt door overmatig netwerk verkeer.

Als voorbeeld maken we hieronder een account 2 account plans aan, één voor een website die maximaal 1GB schijfruimte gebruikt, geen sub-domains kan aanmaken, maximaal 2 Terrabyte netwerk verkeer genereert per maand en waar maximaal 5 mailboxen kunnen worden gebruikt, en één voor een website die maximaal 15GB schijfruimte gebruikt, 2 sub-domains kan aanmaken, maximaal 5 Terrabyte netwerk verkeer genereert per maand en waar maximaal 10 mailboxen kunnen worden gebruikt.

  1. Ga in het Virtualmin scherm naar “System Settings” ==> “Account Plans”, klik op het “Unlimited Webserver Plan” dat we net hebben aangemaakt, en vervolgens op de “Clone” button.
  2. Maak onder “Basic plan details”de volgende aanpassingen:
    • Vul bij “Plan name” in: “1GB Webserver Plan”.
    • Kies bij “Quota for entire server” en bij “Quota for server administrator user” voor in: “Selected”, vul “1” in en kies in het drop-down boxje voor “GiB”.
    • Kies bij “Limit on number of users” en “Limit on number of aliases” voor “At most” en vul “5” in.
    • Kies bij “Limit on number of virtual servers” voor “At most” en vul “0” in.
    • Kies bij “Bandwidth limit” voor “At most”, vul “2” in en kies in het drop-down boxje voor “TiB”.
    • Klik op de “Create” button.
  3. Ga in het Virtualmin scherm weer naar “System Settings” ==> “Account Plans”, klik opnieuw op het “Unlimited Webserver Plan” dat we eerder hebben aangemaakt, en vervolgens weer op de “Clone” button.
  4. Maak onder “Basic plan details”de volgende aanpassingen:
    • Vul bij “Plan name” in: “15GB Webserver Plan”.
    • Kies bij “Quota for entire server” en bij “Quota for server administrator user” voor in: “Selected”, vul “15” in en kies in het drop-down boxje voor “GiB”.
    • Kies bij “Limit on number of users” en “Limit on number of aliases” voor “At most” en vul “10” in.
    • Kies bij “Limit on number of virtual servers” voor “At most” en vul “2” in.
    • Kies bij “Bandwidth limit” voor “At most”, vul “5” in en kies in het drop-down boxje voor “TiB”.
    • Klik op de “Create” button.

We hebben nu drie account plans aangemaakt, maar je kan er natuurlijk net zoveel maken als je zelf wil.

 

Postfix Mail Server settings.

Eigenlijk moeten we er ook nog voor zorgen dat de Postfix Mail Server ook mails kan versturen maar hier zitten, omdat we de mail server thuis op een normale internet verbinding draaien, nog wel wat haken en ogen aan. In de meeste gevallen zal je ISP maatregelen hebben genomen om te voorkomen dat de mail server rechtstreeks vanuit jouw huis mail gaat versturen. Je kunt in dat geval alleen mails versturen via een mail server van je ISP, en dat kan alleen vanaf het domein van je ISP en niet vanaf je eigen domein. Aan hoe je dit kan oplossen wordt nog een apart artikel geweid.

We zijn nu klaar om de standaard instellingen te configureren voor de websites die we gaan hosten.

Een Default redirect aanmaken.

Wanneer een bezoeker de domeinnaam van onze site heeft ingevuld in de webbrowser en vanuit het internet wordt doorgestuurd naar de server moet de server ervoor zorgen dat hij terecht komt op de juiste virtual host (web site). Maar wat als een bezoeker op een andere manier naar onze site komt, b.v. omdat hij bij vergissing een niet bestaand sub-domein van ons domein in zijn browser heeft ingevuld, of misschien wel ons externe IP adres? In dat geval weet de webserver niet wat hij met het verzoek aan moet en komt de bezoeker op min of meer willekeurig op één van de domeinen uit die op onze server wordt gehost.

Dat willen we natuurlijk voorkomen. Daarom gaan we ervoor zorgen dat de bezoeker toch op een specifieke door onszelf bepaalde web pagina terecht komt, en daar een foutmelding te zien krijgt of vanaf daar eventueel wordt doorgestuurd naar een door ons bepaald domein.

Default Virtual Server Address.

Maar voordat we dat gaan doen gaan we eerst nog één ding aanpassen. Nadat Virtualmin standaard is geïnstalleerd zal bij het aanmaken van een nieuwe site de SSL verbinding (HTTPS) voor de site worden gekoppeld aan het IP adres van de server. Dit wil in de praktijk nog wel eens onvoorspelbaar gedragen wanneer de bezoeker van de site het IP adres in de browser heeft ingevuld in plaats van de domein naam. Daarom gaan we ervoor zorgen dat dit altijd wordt gekoppeld aan “*” (any adres).

  1. Ga in het virtualmin scherm naar “System Settings” ==> “Virtualmin Configuration”.
  2. Kies in de drop-down box “Defaults for new domains”.
  3. Kies bij “Address format for Apache virtual hosts” voor “Allways use *”.
  4. klik op “Save”.

 

De Default vhost actief maken.

In het voorbeeld hieronder gaan we ervoor zorgen dat, wanneer de bezoeker via een foute URL of een IP adres heeft ingevuld, hij in zo'n geval terecht komt op de voorbeeld web pagina die bij de installatie van de apache2 webserver op onze server is aangemaakt. Deze pagina heet “index.html” en staat in de directory “/var/www/html/”. Die pagina gaan we hierna ook nog aanpassen.

Er staan voor dit doel al twee bestanden klaar in de directory “/etc/apache2/sites-available/”. Het ene bestand, genaamd “000-default.conf”, zorgt ervoor dat bezoekers die met HTTP binnenkomen op IP poort 80 de pagina “index.html” uit de directory “/var/www/html/” voorgeschoteld krijgen. Het andere bestand, genaamd “default-ssl.conf” doet hetzelfde voor bezoekers die met HTTPS binnen komen op IP poort 443. Het enige dat we nog moeten doen is dit activeren door symbolic links naar deze beide bestanden aan te maken in directory “/etc/apache2/sites-enabled/”. Dit kun je binnen Virtualmin eenvoudig als volgt doen:

  1. Ga in het Webmin scherm naar “Tools” ==> “Command shell”.
  2. Voer voor het maken van de eerste symbolic link in het invulveld het onderstaande commando in (dit alles op één regel):
    ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/000-default.conf
  3. Klik op de “Execute command” button.
  4. Voer voor het maken van de tweede symbolic link in het invulveld het onderstaande commando in (dit alles op één regel):
    ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/default-ssl.conf
  5. Klik op de “Execute command” button.
  6. Ga in het Webmin scherm naar “Servers” ==> “Apache Webserver” en klik rechts boven in het scherm op de “Apply Changes” button.

Bezoekers die op een verkeerde manier naar onze server verbinden krijgen nu dus de “Apache2 Ubuntu Default Page” te zien. Je zou ervoor kunnen kiezen deze pagina te vervangen door een eigen pagina, of misschien wil je de bezoeker wel doorsturen naar een ander domein.

Een eigen default pagina.

Als eerste moet je natuurlijk het html bestand hebben dat je als default pagina wil gebruiken. Hoe je aan zo'n bestand komt of hoe je het zelf maakt gaat buiten dit verhaal om, maar ik ga er in dit voorbeeld vanuit dat je dit bestand hebt. Eventueel kun je hier index.zip downloaden. Dit zip bestand bevat een voorbeeld index.html. Je kunt zien welke default pagina op dit moment actief is door met je webbrowser naar het IP adres van je server te gaan, dus b.v. https://192.168.1.10/ . We gaan nu die default pagina aanpassen. Zorg dat je het nieuwe index.html bestand bij de hand hebt.

  1. Ga in het Webmin scherm naar “Tools” ==> “File Manager”.
  2. Navigeer in de File Manager naar “/var/www/html/”.
  3. Klik met de rechter muisknop op het bestand index.html en selecteer “Rename”.
  4. Verander de naam in “index-org.html” en klik op de “Rename” button.

  1. Klik in het menu rechts boven op “File” en kies “Upload to current directory”.
  2. Sleep het nieuwe index.html bestand vanuit de Windows File Manager naar de upload box.
  3. Klik op de “Upload” button.

Je nieuwe default web pagina is nu operationeel.

De volgende stap is om je eerste virtual host aan te maken en in gebruik te nemen. Dat wordt in het volgende artikel besproken.