KB CITg - Hetzner Flooris Transformer Proxy + Waiting Room Manager¶
Terug naar klant: CITg iUsed Deze guide gaat specifiek over het instellen van een Hetzner VPS, die gebruikt kan worden om de Flooris Transformer Proxy te hosten.
Hierbij gaan we ook de Waiting Room Manager installeren, zodat de server gebruikt kan worden in drukke periodes om bepaalde pagina's (of alle pagina's) te beschermen en eerlijker de beschikbare systeem resources te verdelen.
Architectuur¶
Als snelle opfrisser zal hieronder een diagram getoond worden die aangeeft hoe de Flooris Transformer Proxy met waiting room in elkaar zit.
Er zijn 3 GIT repositories relevant:
- Flooris Transformer Proxy
- De repository voor de proxy server zelf, hiervan is er 1 of meerdere instances indien er meer capaciteit nodig is.
- Flooris Transformer Proxy Network
- De repository die het globale Docker netwerk beheert en de global Redis instance heeft waarmee gecommuniceerd wordt. Hier is altijd maar 1 instance van.
- Flooris Waiting Room Manager
- De repository die de applicatie draait die bepaalt welke sessies er door mogen en welke nog moeten wachten tot ze toegelaten worden. Hier is altijd maar 1 instance van.
flowchart LR
subgraph Flooris Transformer Proxy repo
flooris_transformer_proxy_1[Flooris Transformer Proxy]
flooris_transformer_proxy_2[Flooris Transformer Proxy]
flooris_transformer_proxy_3[Flooris Transformer Proxy]
end
subgraph Flooris Waiting Room Manager repo
flooris_waiting_room_manager[Flooris Waiting Room Manager]
end
subgraph Flooris Transformer Proxy Network repo
redis[(Redis)]
end
flooris_transformer_proxy_1 <----> redis
flooris_transformer_proxy_2 <----> redis
flooris_transformer_proxy_3 <----> redis
redis <----> flooris_waiting_room_manager
Opzetten (Activeren)¶
Hetzner VPS aanmaken¶
Snapshot gebruiken indien aanwezig
Omdat deze proxy niet altijd nodig is, zijn we van plan de server hierna weer te verwijderen om kosten te besparen.
Voordat hij verwijderd wordt, zal er eerst een snapshot gemaakt worden, zodat we daarna snel weer de server kunnen aanmaken en gebruiken.
Indien je deze pagina dus in de toekomst leest, kijk dan eerst even naar de beschikbare Hetzner snapshots of hij niet al bestaat. Dat zal een hoop tijd en moeite besparen!
Als deze bestaat, kan je de server bijwerken en daarna direct doorgaan naar de Applicatie setup stap.
Maak eerst een VPS aan zoals normaal, er is aan deze stap verder niks speciaals.
In dit geval hadden wij gekozen voor een CX23 door de goede prijs ervoor en de performance wat je ervoor krijgt.
Als het later toch niet genoeg blijkt, kunnen we deze altijd nog gemakkelijk veranderen naar een grotere variant.
Vergeet niet om ook een SSH key te koppelen zodat je daarna kan verbinden met de server.
Systeem bijwerken en packages installeren¶
Als eerste gaan we het systeem bijwerken, want vaak lopen de images nog een beetje achter.
apt update
apt upgrade
Herstart aanbevolen
Hoogstwaarschijnlijk heb je nu ook een kernel update gehad, dus het is aanbevolen om nu eerst de server te herstarten.
Nu het systeem bijgewerkt is, kunnen we Docker gaan installeren.
# Removing Ubuntu's outdated Docker (if installed)
apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1)
# Add Docker's official GPG key:
apt update
apt install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
De server zou nu bijgewerkt moeten zijn en de juiste packages moeten hebben.
Dedicated proxy-user gebruiker aanmaken¶
Voor veiligheid zullen we een dedicated gebruiker aanmaken die vervolgens de Flooris Transformer Proxy en Waiting Room Manager zal draaien.
# Creating the proxy user
adduser proxy-user \
--shell /bin/bash \
--home /home/proxy-user
usermod -a -G users,docker proxy-user
# Adding our SSH key, so we can also just sign in as our proxy user without having to "sudo -i -u proxy-user" each time we connect
mkdir -p /home/proxy-user/.ssh
touch /home/proxy-user/.ssh/authorized_keys
echo 'YOUR_SSH_KEY_HERE' >> /home/proxy-user/.ssh/authorized_keys
# Fixing the ownership
chown -R proxy-user:proxy-user /home/proxy-user/.ssh
GitHub deploy key instellen¶
Om een clone te kunnen uitvoeren van de applicatie later, moeten we een deploy key aanmaken.
Als eerste, zorg ervoor dat je verbonden bent met de server als de proxy-user gebruiker.
# Make sure the config file exists
touch ~/.ssh/config
# Generate the SSH keys we will use later on
ssh-keygen -t ed25519 -f ~/.ssh/flooris-transformer-proxy -N ""
ssh-keygen -t ed25519 -f ~/.ssh/flooris-transformer-proxy-network -N ""
ssh-keygen -t ed25519 -f ~/.ssh/flooris-waiting-room-manager -N ""
# Append our custom SSH hosts
echo "
Host flooris-transformer-proxy
HostName github.com
User git
IdentityFile ~/.ssh/flooris-transformer-proxy
IdentitiesOnly yes
Host flooris-transformer-proxy-network
HostName github.com
User git
IdentityFile ~/.ssh/flooris-transformer-proxy-network
IdentitiesOnly yes
Host flooris-waiting-room-manager
HostName github.com
User git
IdentityFile ~/.ssh/flooris-waiting-room-manager
IdentitiesOnly yes
" >> ~/.ssh/config
Nu de keys bestaan, kan je de SSH key aanmelden bij GitHub op de GIT repository zelf als een deploy key bij de repository instellingen. Je kan het volgende commando gebruiken om de public keys op te vragen.
echo ""
echo "[flooris-transformer-proxy]"
cat ~/.ssh/flooris-transformer-proxy.pub
echo ""
echo "[flooris-transformer-proxy-network]"
cat ~/.ssh/flooris-transformer-proxy-network.pub
echo ""
echo "[flooris-waiting-room-manager]"
cat ~/.ssh/flooris-waiting-room-manager.pub
Applicatie setup¶
De server zou nu klaar moeten staan voor onze applicatie, we gaan nu dus de Flooris Transformer Proxy installeren samen met het netwerk en de Flooris Waiting Room Manager.
cd ~
git clone flooris-transformer-proxy:flooris/flooris-transformer-proxy.git
git clone flooris-transformer-proxy-network:flooris/flooris-transformer-proxy-network.git
git clone flooris-waiting-room-manager:flooris/flooris-waiting-room-manager.git
Vanaf dit punt kan je de setup instructies van de Flooris Transformer Proxy Network volgen, daarna kan je de setup instructies van de andere repositories volgen.
Vergeet hierbij niet om de WaitingRoomTransformer request transformer aan te zetten!
Proxy testen zonder DNS-aanpassing
Als je de proxy wil testen zonder dat iedereen gelijk door de proxy heen gaat, kan je de /etc/hosts bestand aanpassen op je machine om zo zelf de DNS record aan te passen.
Op deze manier kan je gewoon naar het domein gaan in je browser en zal hij automatisch het IP adres gebruiken die is ingesteld in je /etc/hosts bestand in plaats van het daadwerkelijke IP.
Voorbeeld
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
# Transformer Proxy test
178.105.15.174 refurbisheddirect.com
Hierbij zorgen we ervoor dat als we naar refurbisheddirect.com gaan, hij niet wijst naar het IP van de echte server, maar naar het IP van de server waar de Flooris Transformer Proxy draait.
Afbreken (Deactiveren)¶
Als de waiting room niet meer nodig is, kan er besloten worden om de gehele Flooris Transformer Proxy server te deactiveren en verwijderen. Hierdoor komen er niet maandelijks extra hosting kosten bij voor een server die niet gebruikt wordt.
Hierin gaan we de procedure doorheen om een snapshot te maken van de server voor de volgende keer, netjes alles afsluiten, verwijderen en documenteren.
Todo
De documentatie hiervoor schrijven zodra de server afgebroken moet worden