Wähle einen Artikel
Pixelfed auf VPS/vServer installieren
Pixelfed auf VPS/vServer installieren

0. Überblick

1. Pixelfed installieren

1.1 Einleitung

Pixelfed ist ein freies soziales Netzwerk zum Austausch von Fotos. Im Gegensatz zu anderen großen sozialen Netzwerken kann Pixelfed selbst gehostet werden.

1.2 Infos zu yml Dateien

Bei yml Dateien ist es sehr wichtig, dass die Zeilen alle richtig eingerückt sind. Die Zeilen MÜSSEN immer mit der Leertaste eingerückt werden. Es dürfen KEINE Tabs enthalten sein. Du kannst den nachfolgenden Code immer online „überprüfen“ lassen. Die meisten Fehler entstehen nämlich durch die falsche Formatierung. Ein Dienst zum Überprüfen ist zum Beispiel: https://codebeautify.org/yaml-validator

1.3 Vorbereitung

Diese Anleitung basiert auf dem aktuellen Debian 11 Betriebssystem. Pixelfed werden wir unter Docker realisieren. Dies ermöglicht uns später sehr schnelle Updates und eine schnelle Installation.

Um Pixelfed neben anderen Diensten auf unserem Server betreiben zu können, nutzen wir hier den Reverse Proxy Traefik. Die Anleitung dazu findest du hier: https://www.dogado.de/vps/vserver-anwendungsfaelle/traefik-reverseproxy-auf-vserver-installieren

Diese Anleitung passt auf die obige Traefik Anleitung. Daher lässt sich diese Anleitung nur 1:1 nutzen, wenn du Traefik nach der obigen Anleitung installiert hat.

1.3.1 Repository downloaden

Zuerst laden wir uns das aktuelle Repository von Pixelfed herunter. Dazu gibst du folgendes in deine Konsole ein:

git clone https://github.com/pixelfed/pixelfed.git /opt/containers/pixelfed 

Den Pfad kannst du gerne anpassen. Dann kannst du diese Anleitung aber nicht mehr 1:1 nutzen.

1.3.2 Docker Compose Datei anpassen

Wir müssen nun sehr viele Änderungen in der Docker Compose Datei vornehmen. Daher ist es einfach, dass du diese jetzt löschst und dann neu erzeugst. Dazu gibst du folgendes ein:

rm /opt/containers/pixelfed/docker-compose.yml 

Anschließend erstellen wir die Datei neu:

nano /opt/containers/pixelfed/docker-compose.yml 

Nun kopierst du folgenden Inhalt in die Datei:

version: '3' 

 

services: 

 

  app: 

    build: 

      context: . 

      dockerfile: contrib/docker/Dockerfile.apache 

    container_name: pixelfed-app 

    restart: unless-stopped 

    env_file: 

      - .env.docker 

    volumes: 

      - app-storage:/var/www/storage 

      - app-bootstrap:/var/www/bootstrap 

      - ./.env.docker:/var/www/.env 

    networks: 

      - default 

      - proxy 

    depends_on: 

      - db 

      - redis 

    labels: 

      - "traefik.enable=true" 

      - "traefik.http.routers.pixelfed.entrypoints=http" 

      - "traefik.http.routers.pixelfed.rule=Host(`pixelfed.euredomain.de`)"   # Hier eure URL eingeben # 

      - "traefik.http.middlewares.pixelfed-https-redirect.redirectscheme.scheme=https" 

      - "traefik.http.routers.pixelfed.middlewares=pixelfed-https-redirect" 

      - "traefik.http.routers.pixelfed-secure.entrypoints=https" 

      - "traefik.http.routers.pixelfed-secure.rule=Host(`pixelfed.euredomain.de`)"    # Hier eure URL eingeben # 

      - "traefik.http.routers.pixelfed-secure.tls=true" 

      - "traefik.http.routers.pixelfed-secure.tls.certresolver=http" 

      - "traefik.http.routers.pixelfed-secure.service=pixelfed" 

      - "traefik.http.services.pixelfed.loadbalancer.server.port=80" 

      - "traefik.docker.network=proxy" 

      - "traefik.http.routers.pixelfed-secure.middlewares=secHeaders@file" 

 

  worker: 

    build: 

      context: . 

      dockerfile: contrib/docker/Dockerfile.apache 

    container_name: pixelfed-worker 

    restart: unless-stopped 

    env_file: 

      - .env.docker 

    volumes: 

      - app-storage:/var/www/storage 

      - app-bootstrap:/var/www/bootstrap 

      - ./.env.docker:/var/www/.env 

    networks: 

      - default 

      - proxy 

    command: gosu www-data php artisan horizon 

    depends_on: 

      - db 

      - redis 

      - app 

 

##  DB and Cache 

  db: 

    image: mysql:8.0 

    restart: unless-stopped 

    container_name: pixelfed-db 

    networks: 

      - default 

    env_file: 

      - .env.docker 

    volumes: 

      - "db-data:/var/lib/mysql" 

 

  redis: 

    image: redis:5-alpine 

    restart: unless-stopped 

    container_name: pixelfed-redis 

    env_file: 

      - .env.docker 

    volumes: 

      - "redis-data:/data" 

    networks: 

      - default 

 

volumes: 

  app-storage: 

  app-bootstrap: 

  db-data: 

  redis-data: 

 

networks: 

  proxy: 

    external: true 

Nun müssen wir noch einiges anpassen.

1.3.3 Hostname anpassen

Zuerst musst du noch den Hostnamen anpassen, über welchen später Pixelfed erreichbar sein soll.

Diese beiden Zeilen musst du anpassen.

    - "traefik.http.routers.pixelfed.rule=Host(`pixelfed.euredomain.de`)" 

    - "traefik.http.routers.pixelfed-secure.rule=Host(`pixelfed.euredomain.de`)" 

In meinem Fall also:

    - "traefik.http.routers.pixelfed.rule=Host(`pixelfed.testbereich.net`)" 

    - "traefik.http.routers.pixelfed-secure.rule=Host(`pixelfed.testbereich.net`)" 

1.3.4 MySQL Passwort vergeben

Dazu öffnest du folgende Datei:

nano /opt/containers/pixelfed/.env.docker 

Ab Zeile 56 beginnt die Datenbank Konfiguration.

Hier änderst du folgende beide Zeilen ab:

DB_PASSWORD=pixelfed_db_pass 

MYSQL_PASSWORD=pixelfed_db_pass 

In beiden Zeilen musst du das selbe Kennwort schreiben. Bei mir wäre dies:

DB_PASSWORD=An34u7adb347Agbfk45ut 

MYSQL_PASSWORD=An34u7adb347Agbfk45ut 

1.3.5 URLs in der Konfiguration anpassen

Nun musst du noch einige URLs in der Konfigurationsdatei anpassen. Dazu änderst du folgende Zeilen in der Konfiguration:

APP_NAME="Pixelfed Prod" 

APP_URL=https://real.domain 

APP_DOMAIN="real.domain" 

ADMIN_DOMAIN="real.domain" 

SESSION_DOMAIN="real.domain" 

Bei mir ist das:

APP_NAME="Dogado Pixelfed" 

APP_URL=https://pixelfed.testbereich.net 

APP_DOMAIN="pixelfed.testbereich.net" 

ADMIN_DOMAIN="pixelfed.testbereich.net" 

SESSION_DOMAIN="pixelfed.testbereich.net" 

1.3.6 Sprache auf Deutsch festlegen

Dazu änderst du folgenden Wert in der Konfigurationsdatei:

vorher:

APP_LOCALE=en 

nachher:

APP_LOCALE=de 

1.3.7 Weitere Einstellungen

In der Konfigurationsdatei kannst du noch viele weitere Einstellungen vornehmen. Wir haben jetzt alle Grundeinstellungen vorgenommen.

1.3.8 Image bauen

Nachdem wir alle Einstellungen vorgenommen haben, kannst du das Image erstellen. Dieser Vorgang dauert ca. 2 Minuten. Zum Starten gibst du folgendes ein:

docker-compose -f /opt/containers/pixelfed/docker-compose.yml build 

2. Pixelfed starten

Nun kannst du Pixelfed starten. Dazu gibst du folgendes ein:

docker compose -f /opt/containers/pixelfed/docker-compose.yml up -d 

 

3. App Key generieren 

Nachdem nun das Image gestartet ist, musst du noch einen App Key generieren. Gib dazu folgendes ein: 

docker exec pixelfed-app php artisan key:generate 

Nun kannst du den Container erneut starten. 

docker compose -f /opt/containers/pixelfed/docker-compose.yml down 
docker compose -f /opt/containers/pixelfed/docker-compose.yml up -d 

4. Browser öffnen 

Nach ca. 1 Minute sollte Pixelfed im Browser zur Verfügung stehen. Dazu gehst du auf die Domain, welche du in der Docker Compose Konfiguration eingegeben hast. Bei mir ist dies: https://pixelfed.testbereich.net

Jetzt solltest du folgendes sehen:
 

5. Datenbank migrieren

Nun musst du als erstes die Datenbank migrieren. Dazu gibst du folgenden Befehl in deiner Konsole ein:

docker exec pixelfed-app  php artisan migrate --force 

Wenn du alles richtig gemacht hast, dann sollte nun folgendes erscheinen:
 

Dieser Vorgang dauert ca. 1 Minute.

6. Benutzer anlegen

Nachdem du die Datenbank migriert hast, kannst du deinen ersten Benutzer anlegen. Dazu klickst du auf der Webseite auf „Register“.
 

Hier erstellst du nun einen Account.

Nach der Registrierung wirst du auf dein Profil weitergeleitet.

7. Benutzer zum Administrator machen

Nachdem du einen Benutzer erstellt hast, kannst du diesen per Konsole zum Administrator machen. Dazu gibst du folgendes ein. Hier musst du noch deinen Benutzernamen ergänzen.

docker exec pixelfed-app /bin/bash -c "yes | php artisan user:admin <dein Benutzer>" 

Bei mir wäre dies:

docker exec pixelfed-app /bin/bash -c "yes | php artisan user:admin dogado"  

Du solltest dann folgende Ausgabe sehen:
 

8. Admin Interface öffnen

Als Administrator kannst du nun auf das Admin Interface zugreifen. Dazu meldest du dich zuerst ab und wieder an. Anschließend klickst du auf den „blauen Pfeil“ und wählst dann „Account Settings“ aus. 

Nun klickst du oben rechts auf die Person und wählst „Administration“ aus. 

Nun siehst du das Admin Interface:  

Nächster Artikel
Pleroma auf VPS/vServer installieren
Weitere passende Themen