API Aufsetzen
Installation auf Dokku Server
-
Eine neue App inf-teaching-api auf dem Server erstellen
root@dokkudokku apps:create inf-teaching-api
dokku domains:add inf-teaching-api teaching-api.gbsl.website
dokku postgres:create inf-teaching-api
dokku postgres:link inf-teaching-api inf-teaching-api
dokku config:set --no-restart inf-teaching-api MSAL_CLIENT_ID="<MSAL_CLIENT_ID>"
# wird für den Cookie-Name auf dem Client gebraucht
dokku config:set --no-restart inf-teaching-api APP_NAME="infTeachingApi"
dokku config:set --no-restart inf-teaching-api ALLOWED_ORIGINS="gbsl.website"
dokku config:set --no-restart inf-teaching-api MSAL_TENANT_ID="<MSAL_TENANT_ID>"
dokku config:set --no-restart inf-teaching-api SESSION_SECRET="$(openssl rand -base64 32)"
# allow file-uploads up to 5mb
mkdir /home/dokku/inf-teaching-api/nginx.conf.d/
echo 'client_max_body_size 5m;' > /home/dokku/inf-teaching-api/nginx.conf.d/upload.conf
chown dokku:dokku /home/dokku/inf-teaching-api/nginx.conf.d/upload.conf
service nginx reload
dokku nginx:set inf-teaching-api x-forwarded-proto-value '$http_x_forwarded_proto'
dokku nginx:set inf-teaching-api x-forwarded-for-value '$http_x_forwarded_for'
dokku nginx:set inf-teaching-api x-forwarded-port-value '$http_x_forwarded_port'Alternativ: direkt über
/home/dokku/inf-teaching-api/ENV -
Optionale Umgebungsvariablen setzen:
CORS: Zugriff von SubdomainsErlaube jegliche Subdomains von gbsl.website:
/home/dokku/inf-teaching-api/ENVdokku config:set inf-teaching-api ALLOW_SUBDOMAINS="true"Deploy Preview mit NetlifyErmöglicht den Zugriff von Deploy-Previews von Netlify mit der Domain
https://deploy-preview-\d+--inf-teaching-api.netlify.appauf die API./home/dokku/inf-teaching-api/ENVdokku config:set inf-teaching-api ALLOW_SUBDOMAINS="true"Github-Integration fürs CMS/home/dokku/inf-teaching-api/ENVdokku config:set --no-restart inf-teaching-api GITHUB_CLIENT_ID="<GITHUB_CLIENT_ID>"
dokku config:set --no-restart inf-teaching-api GITHUB_CLIENT_SECRET="<GITHUB_CLIENT_SECRET>"
dokku config:set inf-teaching-api GITHUB_REDIRECT_URI="<GITHUB_REDIRECT_URI>"Sentry Anbindung für Fehler-Reporting/home/dokku/inf-teaching-api/ENVdokku config:set --no-restart inf-teaching-api SENTRY_AUTH_TOKEN="<SENTRY_AUTH_TOKEN>"
dokku config:set --no-restart inf-teaching-api SENTRY_DSN="<SENTRY_DSN>"
dokku config:set --no-restart inf-teaching-api SENTRY_ORG="<SENTRY_ORG>"
dokku config:set inf-teaching-api SENTRY_PROJECT="<SENTRY_PROJECT>"LMS: Standard-Gruppe für Inhalts-ModerationDiese Gruppe wird beim Erstellen einer neuen Document-Root standardmässig mit
RW-Berechtigungen hinzugefügt./home/dokku/inf-teaching-api/ENVdokku config:set inf-teaching-api ADMIN_USER_GROUP_ID="<ADMIN_USER_GROUP_ID>" -
Auf dem Laptop
@laptopgit remote add dokku dokku@<dokku-ip>:inf-teaching-api
git push dokku -
SSL-Zertifikat erstellen Sobald die Seite erstmalig veröffentlicht wurde, muss einmalig ein SSL-Zertifikat erstellt werden. Dies geschieht mit dem Befehl
root@dokkudokku letsencrypt:enable inf-teaching-api -
Backups einrichten Dokku ermöglicht das unkomplizierte Backupen von Datenbanken auf S3 Speicher.
# dokku postgres:backup-auth inf-teaching-api <s3-access-key-id> <s3-secret-access-key> <s3-default-region> <s3-signature-version> <s3-endpoint-url>
dokku postgres:backup-auth inf-teaching-api <s3-access-key-id> <s3-secret-access-key> auto s3v4 <s3-endpoint-url>
dokku postgres:backup inf-teaching-api <s3-bucket-name>
dokku postgres:backup-set-encryption inf-teaching-api $(openssl rand -base64 32)
dokku postgres:backup-schedule inf-teaching-api "0 3 * * *" <s3-bucket-name> # daily backup at 3amSpeichern des Encryption Key'sWerden die Backups verschlüsselt, muss der Schlüssel zwingend sicher verwahrt werden, damit die Backups dann auch wieder entschlüsselt werden können!
$(openssl rand -base64 32)Backup wiederherstellen