Installation
1. Vorarbeiten
Wichtig: als erstes die "Basis Installation Ubuntu 24.04" ausführen!
Wenn etwas von den Standardwerten abweichen soll, dann müssen die Umgebungsvariablen in der ~/.bashrc
hinzugefügt/angepasst werden.
export IS_NAME=icon-server # optional
export IS_ICONS_PATH=/var/www/icons # optional
export SERVICE_INI_FILE=/etc/locr/icon-server.ini # optional
export USER_SERVER_INI_FILE=/etc/locr/user-server.ini # optional
export HTPASSWD_FILE=/etc/nginx/.htpasswd # optional
Die Datei /etc/locr/icon-server.ini
anlegen und folgende Standardwerte eintragen.
sudo nano /etc/locr/icon-server.ini
Password <my_db_password>
für den DB-Benutzer root
eintragen!
[CLIENT]
http_auth_active = false
http_auth_username =
http_auth_password =
[DB]
name = icons
username = root
password = <my_db_password>
[DEV]
host = 0.0.0.0
port = 9876
[DIRS]
icons = /var/www/icons
[ENV]
environment = production
Die Datei /etc/locr/user-client.ini
anlegen und folgende Standardwerte eintragen.
sudo nano /etc/locr/user-client.ini
Password <my_password>
für den Benutzer serverconnect
eintragen!
[API]
endpoint = https://users.locr.com/api/
http-auth-enabled = false ; true oder false
http-auth-type = basic ; basic oder digest
http-auth-username = serverconnect
http-auth-password = <my_password>
ssl-verifyhost = 2 ; 0, 1 oder 2
ssl-verifypeer = true ; true oder false
[COOKIE]
name = X-LOCR-USER-TOKEN
expires = "1 month" ; in Sekunden (0 => session cookie) oder als DateInterval-String wie unter https://www.php.net/manual/de/dateinterval.createfromdatestring.php beschrieben.
[JWT]
issuer = https://users.locr.com/
audience = https://users.locr.com/
secret = ; Kann per `echo '<?php print base64_encode(random_bytes(32));' | php` generiert werden.
signature-algorithm = HS256 ; EdDSA, HS256, HS384, HS512, RS256, ..., ES256, ..., PS256, ..., none
expiration = 3600 ; in Sekunden oder als DateInterval-String wie unter https://www.php.net/manual/de/dateinterval.createfromdatestring.php beschrieben.
[TOKEN]
type = jwt
destination = local_directory
directory = /var/lib/locr/tokens/jwt
id-generator = uuid4 ; uuid1, uuid4, uuid6, uuid7, random_bytes oder openssl_random_pseudo_bytes
1.1. Installation aus den Quellen
mkdir -p ~/projects && cd ~/projects
# Diesen Befehl verwenden, wenn der Server über den SSH-Key mit Bitbucket verbunden ist
git clone --recurse-submodules git@bitbucket.org:locr/phpiconserver.git PhpIconServer
# Alternativ Repository Access Token verwenden
git clone --recurse-submodules https://x-token-auth:{access_token}@bitbucket.org/locr/phpiconserver.git PhpIconServer
cd PhpIconServer
Für Entwicklungsumgebung
sudo apt update
sudo apt install composer php-xml
composer update
composer install
2. Container Service installieren
Falls noch keine Icons vorhanden sind
[ ! -d "/var/www/icons" ] && sudo mkdir "/var/www/icons" && sudo chown -R www-data:www-data "/var/www/icons"
Für Produktivumgebung
./scripts/install_service.sh
Für Entwicklungsumgebung
./scripts/install_service.sh --env=dev
2.1. Update Script im home-Verzeichnis erstellen
cat <<EOF >~/update_icon_server.sh
#!/usr/bin/env bash
cd ${PWD}/scripts
./update_service.sh
EOF
chmod +x ~/update_icon_server.sh
2.2. nginx Konfiguration hinzufügen
Für den Zugriff unter der Domain icons.locr.com
sudo cp installation_files/nginx/sites-available/icons.locr.com /etc/nginx/sites-available
sudo ln -s /etc/nginx/sites-available/icons.locr.com /etc/nginx/sites-enabled/
Falls noch kein Zertifikat für icons.locr.com
ausgestellt wurde, die Konfiguration zunächst anpassen
sudo nano /etc/nginx/sites-available/icons.locr.com
Hinzufügen und Abändern
include snippets/snakeoil.conf;
# ssl_certificate /etc/letsencrypt/live/icons.locr.com/fullchain.pem;
# ssl_certificate_key /etc/letsencrypt/live/icons.locr.com/privkey.pem;
Nginx-Konfiguration testen und neustarten
sudo nginx -t
sudo systemctl restart nginx
2.3. Datenbank und Tabellen erstellen
sudo apt install mariadb-server
Das Passwort für den DB-Benutzer root
setzen.
sudo mysql
Achtung: das Passwort <my_db_password>
aus der Datei /etc/locr/icon-server.ini
von oben verwenden!
ALTER USER 'root'@'localhost' IDENTIFIED BY '<my_db_password>';
\q
mysql -u root -p --execute="CREATE DATABASE IF NOT EXISTS icons"
mysql -u root -p icons < sql/mysql/create_tables.sql
3. Backup einspielen
sudo apt install bzip2
Aktuelle Dateien von Hetzner Storage Box runterladen
icon-files-(<Day>).tar.bz2.enc
und icons-db-(<Day>).tar.bz2.enc
Dateien entschlüsseln
openssl aes-256-cbc -d -pbkdf2 -in "icon-files-(<Day>).tar.bz2.enc" -out "icon-files-(<Day>).tar.bz2"
openssl aes-256-cbc -d -pbkdf2 -in "icons-db-(<Day>).tar.bz2.enc" -out "icons-db-(<Day>).tar.bz2"
Dateien entpacken
tar xjf "icon-files-(<Day>).tar.bz2"
tar xjf "icons-db-(<Day>).tar.bz2"
Icon Dateien kopieren
sudo cp -rv icons/* /var/www/icons
Rechte der Icon Dateien ändern
sudo chown -R www-data:www-data /var/www/icons/
sudo chmod -R 0777 /var/www/icons/
Datenbank importieren
mysql -u root -p icons < icons.sql