Compare commits

...

2 Commits

Author SHA1 Message Date
scriptos
319d6b71ad Doku gemacht 2024-03-23 23:05:32 +01:00
scriptos
47da27e25e docker-compose hinzugefügt 2024-03-23 23:05:16 +01:00
2 changed files with 100 additions and 0 deletions

View File

@ -1,2 +1,49 @@
# asciinema
Ich biete hier eine Docker-Server installation und ein Script für eine Clientseitige Installation an
## asciinema Server
Zur komfortablen Bereitstellung des asciinema Servers stelle ich euch eine speziell vorbereitete Docker-Kompositionsdatei zur Verfügung. Diese `docker-compose.yaml` beinhaltet präzise definierte Einstellungen und Umgebungsvariablen, um den asciinema Server als Container-Dienst einzurichten.
1. **Download und Vorbereitung**: Ladet die `docker-compose.yaml`-Datei herunter und speichert sie in einem passenden Verzeichnis auf eurem Server.
2. **Erzeugung eines Secret-Keys**: Generiert einen sicheren Schlüssel für eure Installation mit folgendem Befehl:
`tr -dc A-Za-z0-9 </dev/urandom | head -c 64; echo`
3. **Anpassung der Konfigurationsdatei**: Öffnet die `docker-compose.yaml` und ersetzt den Platzhalter bei `SECRET_KEY_BASE` mit dem erzeugten Schlüssel. Passt die weiteren Umgebungsvariablen wie `URL_HOST`, `SMTP_HOST` und so weiter gemäß eurer Infrastruktur an.
4. **Deployment**: Startet euren asciinema Server mit dem Kommando:
`docker-compose up -d`
Dadurch werden die Docker Container im Hintergrund hochgefahren.
### Hinweise zur Konfiguration:
- Der Dienst `asciinema-app` wird als Webapplikation konfiguriert, die auf Port `80` eures Hosts und intern auf Port `4000` des Containers lauscht.
- Die Datenbankverbindung für `asciinema-app` erfolgt über einen separaten Postgres-Container, genannt `asciinema-db`.
- Netzwerkeinstellungen innerhalb des `dockernet` sorgen für eine abgeschottete und sichere Kommunikation zwischen den Services.
- Ich verwende Diesen Docker hinter einem eigenen ReverseProxy. Das bedeutet, diese Konfiguration ist für den Betrieb hinter einem ReverseProxy konfiguriert
## asciinema Client
Der Client Installer ist relativ einfach gehalten.
Das Script wird mit `bash asciinema-client-installer.v1.sh` ausgeführt und dann passiert folgendes:
1. **Installation von asciinema**: Das Skript aktualisiert zuerst die Paketlisten des Systems mit `sudo apt update` und installiert dann asciinema über `sudo apt install asciinema -y`.
2. **Erkennung der Shell-Konfigurationsdatei**: Es wird geprüft, ob eine `.zshrc`-Datei (für oh-my-zsh) im Root-Verzeichnis existiert. Falls ja, wird diese als Konfigurationsdatei (`CONFIG_FILE`) verwendet, ansonsten wird `.bashrc` verwendet.
3. **Konfiguration der Umgebungsvariablen**: Das Skript fügt der erkannten Konfigurationsdatei die Umgebungsvariable `ASCIINEMA_API_URL` hinzu, wobei die URL standardmäßig auf `https://asciinema.media-techport.de` gesetzt wird. Diese Einstellung ist spezifisch für eure API.
4. **Informationen für den Benutzer**: Nach der Konfiguration zeigt das Skript eine Nachricht an, die den Benutzer auffordert, das Terminal neu zu starten, um die Änderungen zu übernehmen.
5. **Nützliche asciinema-Befehle**: Zum Abschluss listet das Skript verschiedene asciinema-Befehle auf, die nach der Installation verwendet werden können, wie `asciinema auth`, `asciinema rec`, `asciinema upload` und weitere, zur Aufnahme, Bearbeitung, Wiedergabe und Verwaltung von Terminal-Sitzungen.

View File

@ -0,0 +1,53 @@
version: '3.3'
services:
asciinema-app:
image: ghcr.io/asciinema/asciinema-server:20240203
container_name: asciinema-app
restart: always
networks:
dockernet:
ipv4_address: 172.16.0.49
ports:
- '80:4000'
environment:
- SECRET_KEY_BASE=%yoursecretkey%
- URL_HOST=asciinema.domain.com
- URL_SCHEME=https
- SMTP_HOST=mail.your-server.de
- SMTP_PORT=587
- SMTP_USERNAME=noreply@domain.com
- SMTP_PASSWORD=%yourpassword%
- SMTP_FROM_ADDRESS=noreplydomain.com
- SMTP_TLS=if_available
- SMTP_AUTH=if_available
- DATABASE_URL=postgresql://postgres@172.16.0.48/postgres
- UPLOAD_SIZE_LIMIT=50000000
- SIGN_UP_DISABLED=false
volumes:
- ./data:/var/opt/asciinema
depends_on:
asciinema-db:
condition: service_healthy
asciinema-db:
image: docker.io/library/postgres:14
container_name: asciinema-db
restart: always
environment:
- POSTGRES_HOST_AUTH_METHOD=trust
networks:
dockernet:
ipv4_address: 172.16.0.48
volumes:
- ./db-data:/var/lib/postgresql/data
healthcheck:
test: ['CMD-SHELL', 'pg_isready -U postgres']
interval: 2s
timeout: 5s
retries: 10
networks:
dockernet:
external: true