Seafile Server Docker - Installation auf Ubuntu 26.04.x LTS
Aus znilwiki
Changelog:
- 24.07.2026 erste Version
Vorwort
Wenn man diese Anleitung 1:1 befolgt erhält man folgendes:
- Einen Seafile Version 13.x Server auf Basis von Docker
- Die Daten werden alle(!) unterhalb von /opt/ abgelegt. Wer diese auf einer zweiten Festplatte haben möchte, sollte diese auf diesen Pfad mappen.
- Es wird ein Reverse Proxy mit installiert
- Der Reverse Proxy versucht selbstständig sich per Let`s Encrypt ein passendes Zertifikat zu holen.
Wenn man vorher also die passenden Voraussetzungen (gleich nachfolgend beschrieben), erhält man einen Fix & Fertig Seafile-Server.
Voraussetzungen
Damit es beim ersten Start auch klappt das sich das System ein passendes Let's Encrypt Zertifikat holt, sollten folgende Bedingungen erfüllt werden:
- Eine feste IP-Adresse für den Seafile-Server festlegen (also schon vor der eigentlichen Installation)
- Auf der Firewall / Fritz!Box oder ähnlichen die folgenden Ports per NAT an die zukünftige IP des Seafile-Servers weiterleiten:
- Einen DNS-Eintrag für den Seafile-Server definieren der auf die externe IP-Adresse eures Systems zeigt.
- Das kann eure MyFritz! Adresse sein, ohne den Port dahinter und ohne das https:// davor:
- Oder ein statischer DNS-Eintrag bei eurem DNS-Hoster wie Strato oder ionos:
- IPv6 nur wenn Ihr es auch verwendet!
- Wichtig ist das dieser DNS-Name aus dem weltweitem Internet auflösbar ist und das Ihr dann genau diesen DNS-Namen als Namen für euren Seafile-Server verwendet!
- Nein, es geht nicht nur mit einer IP-Adresse!
- Das kann eure MyFritz! Adresse sein, ohne den Port dahinter und ohne das https:// davor:
Installation Ubuntu Server 26.04.x LTS (Long Term Support)
Einstellungen für die VM
Falls Ihr das System als virtuelle Maschine (VM) installiert so könnt Ihr folgenden Einstellungen als Beispiel nehmen.
VMware
- Konfiguration: Typisch
- Name und Speicherort: Nach eigener Wahl
- Speicher: Nach eigener Wahl
- Gastbetriebssystem: (*) Linux --> Ubuntu (64-Bit)
- Netzwerk:
- Wie viele Netzwerkkarten möchten Sie anschließen: 1
- Netzwerk: Nach Wahl (VM Network?)
- Adapter: VMXNET 3
- Größe der virtuellen Festplatte:
- Hängt von der Anzahl der Menge der Daten ab
- Ich empfehle min 32GB für das Betriebssystem des Servers.
- Die Festplatte kann bei einer VM nachträglich vergrößert werden - siehe dazu den Abschnitt in diesem Artikel weiter unten
- Man kann auch jederzeit eine weitere Festplatte anhängen und die Daten dorthin migrieren
- Thick-Provision Lazy-Zeroed
Danach Einstellungen der VM bearbeiten: Reiter Hardware:
- Arbeitsspeicher:
- 4GB oder mehr
- CPUs:
- Anzahl der virtuellen Sockets
- 1
- Anzahl der Cores pro Socket: 2 oder mehr nach Bedarf
- Anzahl der virtuellen Sockets
Reiter Optionen
- ...
Proxmox
- General: Node, VM ID, Name etc. nach eigenem Ermessen
- OS:
- Die Iso von Ubuntu-Server auswählen
- Guest OS: Linux / 7.x - 2.6 Kernel (oder 6.x wenn ältere/nicht aktuelle Proxmox-Version)
- System:
- Graphic card: Default
- Machine: Default (i440fx)
- Firmware BIOS: Default (SeaBIOS)
- SCSI Controller: VirtIO SCSI single
- Qemu Agent: Haken setzen!
- Kein TPM!
- Disk:
- Storage: geplanten Speicherort auswählen
- Disk size (GiB): 32 (kann später vergrößert werden)
- Cache: Default (No cache) -> oder nach eigener Wahl wenn Ihr wisst was Ihr tut
- Alle anderen Optionen nach Wahl, Haken bei Backup sollte gesetzt sein
- CPU:
- Sockets: 1
- Cores: 2 (nach Bedarf mehr)
- Type: host wäre die maximale Leistung, ansonsten gemäß dem Vorgaben eurer Umgebung
- Memory:
- Memory (MiB): 4096 (oder später mehr nach Bedarf)
- Network:
- Bridge: gemäß euerer Netzwerkkonfiguration, ansonsten vmbr0
- Model: VirtIO (paravirtualized)
Grundinstallation
Ggf. noch die ISO/CD einlegen (falls nicht schon in der VM Konfiguriert) und Einschalten/Starten,
die Fragen beantwortet Ihr wie folgt (sind ggf. die Überschriften der Dialoge):
PuTTY
Ab dieser Stelle könnt Ihr PuTTY oder den SSH Client eurer Wahl nutzen - was ich dringend empfehle. Denn dann könnt Ihr hier vorgeschlagenen Befehle einfach per Copy&Paste übernehmen.
Die IP-Adresse habt Ihr zu diesem Zeitpunkt ja bereits festgelegt:
Nach der Anmeldung nutze ich immer gerne ein
sudo -i
Damit wechselt man dauerhaft zum root Benutzer und muss nicht vor jedem Befehl ein sudo stellen.
Bei Bedarf: root wieder freischalten
sudo verwendet müsst Ihr selbst wissen- Mit Benutzer installadmin anmelden
sudo -i
- Kennwort des Benutzer installadmin eintippen
passwd root
- neues Kennwort für "root" 2x eintippen
- Lokal Anmelden kann man sich nun mit root - aber eine Anmeldung über SSH funktioniert dann immer noch nicht.
- Damit diese auch funktioniert müsst ihr die
sshd_configbearbeiten:
nano /etc/ssh/sshd_config
sucht nach der Zeile (STRG + W ist Suchen) nach
#PermitRootLogin prohibit-password
und stellt den Cursor in die Zeile.
Drückt nun einmal F9 und 2x F10 - damit erstellt Ihr eine Kopie der Zeile.
Ändert die Kopie wie folgt ab:
PermitRootLogin yes
Speichert die Datei (STRG + x, dann y und Enter) und startet den ssh Dienst neu:
systemctl restart ssh.service
Ab dann klappt es auch mit dem SSH-Login für den Benutzer root, z.B. über puTTY
Jetzt 2x
exit
eintippen wodurch sich das PuTTY Fenster schließt - der (eingeschränkte) Benutzer installadmin hat sich somit abgemeldet
Hinweis:
Ja, ich persönlich arbeite gerne als root und habe diesen für die Anmeldung freigeschaltet. Was ich nicht mache ist das Login per SSH mit Passwort zu erlauben.
Also das obige PermitRootLogin mache ich explizit nicht!.
sudo -i um dauerhaft zum root zu wechselnAnmelden als root
Startet PuTTY wieder und meldet euch diesmal gleich als Benutzer root an.
Alternativ als der Installationsbenutzer und wechselt per
sudo -i
dauerhaft zum root
nano & Co auf Deutsch
nano war eben z.B. noch auf Englisch, mit
apt install -y language-pack-de
ist es (und vieles andere) auf deutsch.
root farbiger Prompt
Ich nutze gerne den farbigen Prompt, wenn Ihr als normaler Benutzer zu diesem wechselt, sieht man das optisch noch besser das man gewechselt hat.
Als root angemeldet:
nano ~/.bashrc
Zeile 39 (Alt + C aktiviert Zeilennummernanzeige):
#force_color_prompt=yes
ändern zu (# entfernen):
force_color_prompt=yes
Per
source ~/.bashrc
könnt Ihr das direkt übernehmen.
Bash History aus mehreren Sitzungen gleichzeitig
Wenn man mehr als eine SSH Sitzung zum Zabbix-Server hat, gewinnt in der Bash-Histoy die Sitzung von der man sich zuletzt abmeldet.
Nachfolgende Änderung sorgt dafür das sich alle Sitzungen eine Bash-History teilen, was ich in Session 1 also aufrufe lässt sich sofort danach in Session 2 per Pfeil nach oben oder STRG + R Suche finden.
Dazu bearbeiten man noch einmal die
nano ~/.bashrc
und hängt ganz unten folgendes an:
# don't put duplicate lines in the history. See bash(1) for more options
# ... or force ignoredups and ignorespace
HISTCONTROL=ignoredups:ignorespace:erasedups
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=50000
HISTFILESIZE=50000
# After each command, append to the history file
# and reread it
export PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'n'}history -a; history -c; history -r"
Damit es sofort aktiv wird wieder
source ~/.bashrc
Ja, HISTSIZE und HISTFILESIZE stehen nun 2x in der Datei, der letzte Eintrag gewinnt.
Feste IP-Adresse vergeben
Der Server hat dank des neuen Setupdialoges nun bereits eine feste IP-Adresse.
Solltet Ihr an dieser etwas ändern müssen so müssen wir erst das Cloud-Init deaktivieren:
nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Inhalt:
network: {config: disabled}
Dann könnte Ihr in der folgenden Datei etwas ändern, die Warnungen das es einen reboot nicht übersteht könnt Ihr ignorieren, dafür haben wir die andere Datei angelegt.
nano /etc/netplan/00-installer-config.yaml
Updates einspielen
als root bzw. zum root wechseln:
Ich mache das normalerweise immer als Einzeiler:
apt update && apt upgrade -y && apt autoremove -y
Das ganze im Detail:
- Updates suchen für Betriebssystem: (aktualisiert den Katalog aus den Update-Quellen)
apt update
- Updates einspielen:
apt upgrade -y
- Nach Update überflüssige Pakete entfernen:
apt autoremove -y
VM Integrationsdienste installieren
Wenn euer installiertes System eine VM, eine Virtuelle Maschine, ist, solltest Ihr je nach verwendeten Hypervisor die passenden Integrationsdienste installieren:
VMware
Unter VMware braucht ihr nichts tun, die
apt install open-vm-tools
sind per Default installiert und aktiv. Ist es keine VMware VM, so könnt Ihr die Tools per
apt remove open-vm-tools
entfernen
Hyper-V
In den Einstellungen der VM solltet Ihr hier den Haken setzen:
In der VM die folgende Datei bearbeiten:
nano /etc/initramfs-tools/modules
und ganz unten die folgenden 4 Zeilen anhängen:
hv_vmbus hv_storvsc hv_blkvsc hv_netvsc hv_utils
Und dann die Tools installieren:
apt -y install linux-virtual linux-cloud-tools-virtual linux-tools-virtual update-initramfs -u
und neu starten:
reboot
Proxmox PVE
In den Einstellungen der VM den QEMU Guest Agent aktivieren:
Und dann in der VM die Tools installieren:
apt -y install qemu-guest-agent
Falls die Harwareeinstellung so aussieht wie oben im Bild (mit dem orangenen Text),müssen wir die VM einmal ganz ausschalten und wieder einschalten:
shutdown -h now
Und danach wieder einschalten und neu an SSH anmelden.
Wenn da nichts orangenes ist, reicht ein reboot.
Dann seht ihr in der Summary der VM sollte nun die IP-Adresse sichtbar sein:
Multipathing deinstallieren (wenn der Server eine VM ist)
Ab Werk findet man im
tail -n 50000 -F /var/log/syslog | grep multipathd
einige Multipath-Meldungen:
... 2026-05-13T09:03:29.804259+00:00 zabbixtest systemd[1]: Starting multipathd.service - Device-Mapper Multipath Device Controller... 2026-05-13T09:03:29.804288+00:00 zabbixtest multipathd[735]: multipathd v0.14.3: start up 2026-05-13T09:03:29.804291+00:00 zabbixtest multipathd[735]: reconfigure: setting up paths and maps 2026-05-13T09:03:29.804294+00:00 zabbixtest systemd[1]: Started multipathd.service - Device-Mapper Multipath Device Controller. 2026-05-13T09:03:29.804922+00:00 zabbixtest systemd[1]: Starting multipathd-queueing.service - Enable queuing for multipath maps... 2026-05-13T09:03:29.805021+00:00 zabbixtest systemd[1]: Finished multipathd-queueing.service - Enable queuing for multipath maps.
In einer VM macht Multipath nur in Ausnahmefällen Sinn, also deaktivieren und deinstallieren:
systemctl stop multipathd.service && systemctl disable multipathd.service apt install libsgutils2-1.48 sg3-utils sg3-utils-udev libmpathcmd0 libmpathpersist0 libmspack0t64 libmultipath0 libxmlsec1-1 libxmlsec1-openssl1 libxslt1.1 zerofree apt remove -y multipath-tools && apt purge -y multipath-tools apt autoremove -y
Die apt install Zeile ist da drin weil diese Pakete ggf. von anderen Anleitung vorausgesetzt werden. Die Pakete werden dadurch auf manuell installiert gesetzt und dann nicht bei einem apt autoremove deinstalliert. Die Multipath-Bibliotheken habe ich dabei weggelassen.
Cloud-Init deinstallieren (Wenn es keine VM bei einem Cloudanbieter ist)
Wenn Ihr die VM reboootet und die Console betrachtet tauchen kurz nach dem Reboot (Fehler-)Meldungen zum Cloud-init auf:
Das Cloud-Init ist - wenn ich mich recht erinnere - dafür da falls eure VM z.B. bei Amazon AWS, Azure oder andere Anbieter läuft um z.B. die Netzwerkinformationen vom Hoster/Provider zu erhalten.
Brauchen wir nicht, also weg damit:
echo 'datasource_list: [ None ]' | tee /etc/cloud/cloud.cfg.d/90_dpkg.cfg apt purge -y cloud-init rm -rf /etc/cloud/ && sudo rm -rf /var/lib/cloud/ apt install cloud-guest-utils eatmydata libeatmydata1 python-babel-localedata python3-jinja2 python3-jsonpatch python3-jsonschema-specifications python3-passlib python3-rpds-py python3-babel python3-json-pointer python3-jsonschema python3-markupsafe python3-referencing gdisk libjs-sphinxdoc -y apt autoremove -y reboot
Die apt install Zeile ist da drin weil diese Pakete ggf. von anderen Anleitung vorausgesetzt werden. Die Pakte werden dadurch auf manuell installiert gesetzt und dann nicht bei einem apt autoremove deinstalliert. Insbesondere die cloud-guest-utils wollen wir behalten
OpenIPMI und IPMItool deinstallieren
Bei meinen VMs schlägt der Start dieses Dienstes eh immer fehl (weil es keine passende Hardware gibt), also weg damit:
apt remove openipmi ipmitool -y && apt purge openipmi ipmitool && apt autoremove -y
Unter Hyper-V wird das Paket scheinbar nicht automatisch installiert.
Zeitzone setzen
In meiner VM ist die Uhrzeit zu diesem Zeitpunkt falsch (gebt mal probeweise date ein) - weil der ESXi- oder Proxmox-Host auf UTC Zeit läuft und Ubuntu in der VM die richtige Zeitzone nicht eingestellt hat.
Wir korrigieren das mit
timedatectl set-timezone Europe/Berlin
ein
date
sollte dann die richtige Uhrzeit ausspucken.
Zeitserver setzen
Es kann Sinnvoll sein, statt externer Zeitserver die eigenen internen zu Nutzen. Eine meiner Prüfungen in meinen Templates ist die Zeitabweichung des Hosts gegenüber dem Zabbix Server. Zum Beispiel in Active Directory-Domänen scheiter die Anmeldung, wenn der Zeitunterschied zwischen Domänencontroller und Client mehr als 15 Minuten beträgt, ab 5 Minuten kann es schon zickig werden.
Es ist ok wenn alle die gleiche falsche Zeit haben. Ich synchronisiere den Zabbix Servers deshalb gerne mit dem zentralen Domänenkontroller mit der PDC-Rolle.
Für die Zeitsynchronisierung ist ab Ubuntu 26.04 Chrony zuständig, über das erstellen der Datei
nano /etc/chrony/sources.d/local-ntp-server.sources
Können wir eigene Zeitserver hinzufügen (für jeden Server eine solche Zeile):
server 192.168.1.81 iburstNach der Änderung müssen wir 'chrony das neu laden lassen:
chronyc reload sources
und mit folgenden Befehl könnt Ihr den Status abfragen:
timedatectl status
Beispielausgabe:
Local time: Mi 2026-05-13 11:21:27 CEST
Universal time: Mi 2026-05-13 09:21:27 UTC
RTC time: Mi 2026-05-13 09:21:26
Time zone: Europe/Berlin (CEST, +0200)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Die verwendeten Zeitquellen seht Ihr per
chronyc sources
Beispielausgabe:
MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ntp-nts-2.ps5.canonical.> 2 6 17 27 -2075us[-2480us] +/- 21ms ^? DC81.znil.local 4 6 17 27 -1255us[-1660us] +/- 46ms ^+ ntp-nts-3.ps5.canonical.> 2 6 17 28 +206us[ -199us] +/- 19ms ^- ntp-nts-2.ps6.canonical.> 2 6 17 28 +7728us[+7323us] +/- 81ms ^- ntp-nts-3.ps6.canonical.> 2 6 17 27 +1970us[+1565us] +/- 78ms ^- ntp-nts-1.ps5.canonical.> 2 6 17 28 +93us[ -312us] +/- 18ms
Und welche er letztendlich genommen hat mit
chronyc tracking
Beispielausgabe:
Reference ID : B97DBE7B (ntp-nts-3.ps5.canonical.com) Stratum : 3 Ref time (UTC) : Wed May 13 09:25:28 2026 System time : 0.000000546 seconds slow of NTP time Last offset : +0.000948038 seconds RMS offset : 0.000487364 seconds Frequency : 9.203 ppm slow Residual freq : +7.510 ppm Skew : 2.559 ppm Root delay : 0.033688802 seconds Root dispersion : 0.001197023 seconds Update interval : 64.1 seconds Leap status : Normal
Wie man sieht, nimmt er einen externen. Wenn wir aber den internen Erzwingen wollen, müssen wir die anderen Quellen auskommentieren:
nano /etc/chrony/sources.d/ubuntu-ntp-pools.sources
und vor alle pool Zeilen ein # davor setzen:
Den Dienst einmal neu starten (statt reloaden, damit er schneller wieder synced):
systemctl restart chrony.service
und den Status prüfen bis in der letzten Zeile Leap status : Normal steht:
chronyc tracking
Ausgabe:
Reference ID : C0A80151 (DC81.znil.local) Stratum : 5 Ref time (UTC) : Wed May 13 09:32:15 2026 System time : 0.000017215 seconds fast of NTP time Last offset : +0.000032023 seconds RMS offset : 0.000032023 seconds Frequency : 10.343 ppm slow Residual freq : +1.266 ppm Skew : 31.972 ppm Root delay : 0.026105130 seconds Root dispersion : 0.038228851 seconds Update interval : 2.0 seconds Leap status : Normal
Automatische Updates deaktivieren
Ich persönlich möchte nicht das der Zabbix-Server automatisch Updates einspielt.
Die automatischen Updates aktualisieren - soweit ich das beobachten konnte - nur den Kernel. Aber auch das möchte ich nicht. Ich möchte das geplant durchführen.
Die automatischen Updates verhindern wir mit
apt remove -y unattended-upgrades
Wer möchte kann auch die Suche nach Updates deaktivieren. Ansonsten schaut das Ubuntu täglich an einem zufälligen Zeitpunkt nach, ob es Updates gibt. Bei der Anmeldung per SSH erhält man dann eine entsprechende Meldung. Deaktivieren kann man die automatsche Suche danach per
nano /etc/apt/apt.conf.d/20auto-upgrades
und in der Datei beide Optionen auf 0 setzen:
APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Unattended-Upgrade "0";
Automatischen Neustart von Diensten bei Updates deaktivieren
Wie schon zuvor beschrieben aktualisiere ich Ubuntu (und andere Software aus Repos) gerne per folgenden Einzeiler:
apt update && apt upgrade -y && apt autoremove -y
In neueren Ubunti Versionen werden dabei Dienste ggf. automatische neu gestartet (wenn man den Einzeiler nimmt!), es gibt dann eine Meldung wie diese:
systemctl restart apache2.service cron.service fwupd.service mariadb.service open-vm-tools.service packagekit.service polkit.service rsyslog.service snmptrapd.service snmptt.service udisks2.service upower.service vgauth.service zabbix-agent2.service zabbix-web-service.service Dienste deren Neustart verschoben wurde: systemctl restart ModemManager.service /etc/needrestart/restart.d/dbus.service systemctl restart getty@tty1.service systemctl restart systemd-logind.service
Im Normalfall ist es kein Problem. Allerdings scheinen die Abhängigkeiten der Dienste nicht beachtet zu werden.
Ist zum Beispiel ein Dienst abhängig von der Datenbank / MySQL|MariaDB, das steht auch so in der /usr/lib/systemd/system/namedesdienstes.service:
After=mysql.service After=mysqld.service After=mariadb.service
Der automatische Neustart startet aber z.B. MariaDB gnadenlos durch ohne vorher abhängige Dienste zu beenden. Schön ist das nicht.
Als Lösung schalte ich inzwischen den automatischen Neustart der Dienste ab, es wird dann nur eine Liste der Dienste ausgegeben die neu gestartet werden müssten:
nano /etc/needrestart/needrestart.conf
und dort ziemlich am Anfang ab Zeile 33:
# Restart mode: (l)ist only, (i)nteractive or (a)utomatically.
#
# ATTENTION: If needrestart is configured to run in interactive mode but is run
# non-interactive (i.e. unattended-upgrades) it will fallback to list only mode.
#
# UBUNTU: the default restart mode when running as part of the APT hook is 'a',
# unless a specific UI is configured (see below).
#$nrconf{restart} = 'i';
Bei der letzten Zeile 40 entfernen wir das Kommentarzeichen davor und machen aus dem i ein l, wie es auch in der obersten Zeile beschrieben wird:
$nrconf{restart} = 'l';
So werden notwendige Neustarts nur aufgelistet. Diese kann man dann von Hand neu starten oder einfach das ganze System rebooten.
Docker installieren
Siehe auch: https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
Als Benutzer root:
GPG Key von Docker hinzufügen:
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
Repository hinzufügen:
Das nachfolgende komplett kopieren und so in einer SSH-Sitzung einfügen. Bleibt der Cursor hinter EOF stehen, einmal Return/Enter drücken.
sudo 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
Danach die Quellen updaten:
apt update
Da sollte nun die Quelle
OK:1 https://download.docker.com/linux/ubuntu resolute InRelease
mit dabei sein.
Jetzt können wir Docker selbst endlich installieren:
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Seafile installieren
Zum Zeitpunkt der Erstellung dieser Anleitung war Seafile 13.x aktuell!
Alle Befehle als Benutzer root!
JWT_PRIVATE_KEY erzeugen
Für die Installation brauchen wir einen JWT_PRIVATE_KEY den wir uns erzeugen und dann wegkopieren:
apt install pwgen pwgen -s 40 1
Beispielausgabe:
ULzA4niwJ2dBOPs23wyZeth5xajUCcQe5pjND7Vb
Ordner erstellen
mkdir /opt/seafile cd /opt/seafile
notwendige Vorlagen herunterladen
wget -O .env https://manual.seafile.com/13.0/repo/docker/ce/env wget https://manual.seafile.com/13.0/repo/docker/ce/seafile-server.yml wget https://manual.seafile.com/13.0/repo/docker/seadoc.yml wget https://manual.seafile.com/13.0/repo/docker/caddy.yml
.env anpassen
In der Datei
/opt/seafile/.env
sind einige allgemeine Vorgaben hinterlegt die Ihr anpassen müsst.
Da sind viele Optionen drin, Ihr müsst nur die nachfolgend aufgezählten ändern:
nano /opt/seafile/-env
und die folgenden Zeilen anpassen: (ggf. Kommentar entfernen, achtet auf das s am Ende beim Protokoll)
SEAFILE_SERVER_HOSTNAME=seafile.znil.org SEAFILE_SERVER_PROTOCOL=https TIME_ZONE=Europe/Berlin JWT_PRIVATE_KEY=ULzA4niwJ2dBOPs23wyZeth5xajUCcQe5pjND7Vb SEAFILE_MYSQL_DB_PASSWORD=euerdbpasswort1234! INIT_SEAFILE_MYSQL_ROOT_PASSWORD=euermysqlrootpasswort INIT_SEAFILE_ADMIN_EMAIL=eure@email.adresse INIT_SEAFILE_ADMIN_PASSWORD=euerAdminPasswort
Bei dem Hostnamen tragt ihr euren DNS-Namen ein!
Alles was hellblau hinterlegt ist: Passwörter denkt Ihr euch beliebig aus (nehmt konservative Sonderzeichen!),
Die Email-Adresse muss es nicht wirklich geben.
Seafile starten
Wichtig ist das Ihr euch mit dem Prompt am folgenden Ort befindet:
cd /opt/seafile/
Dann gebt Ihr
docker compose up -d
ein und wartet ab.
Mit
docker logs -f seafile
könnt Ihr sehen ob der Start von Seafile selbst geklappt hat (sollte es immer),
beim ersten Start holt sich der Reverse Proxy caddy das Let's Encrypt Zertifikat, kann einen Moment dauern.
Dessen Log könnt Ihr mit
docker logs -f seafile-caddy
einsehen.
Dann sollte euer Seafile Server über
https://euer.dns.name
erreichbar sein und Ihr könnt euch mit der festgelegen Email-Adresse und Passwort anmelden.
Das war es dann schon!
Nach einem Neustart des Systems werden die notwendigen Docker-Container automatisch gestartet.
Er hat jetzt jede Menge Ordner unterhalb von /opt/ angelegt:
root@seafile:/opt/seafile# ll /opt total 48K drwxr-xr-x 9 root root 4.0K May 19 19:59 ./ drwxr-xr-x 20 root root 4.0K May 28 21:06 ../ drwx------ 2 root root 16K May 18 11:06 lost+found/ drwxr-xr-x 3 root root 4.0K May 19 19:59 seadoc-data/ drwxr-xr-x 2 root root 4.0K Jul 24 08:57 seafile/ drwxr-xr-x 5 root root 4.0K Jul 23 10:39 seafile-caddy/ drwxr-xr-x 3 root root 4.0K May 19 19:59 seafile-data/ drwxr-xr-x 3 root root 4.0K May 19 19:58 seafile-mysql/
Der lost+found ist bei mir vorhanden weil es eine separate Festplatte ist die ich dahin gemappt habe.
Prüfen ob alles läuft
Per
docker ps
solltet Ihr die 5 Docker Container sehen (Seafile Server, Seafile Hub (=Frontend), MariaDB, Redis und Caddy):
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b25c95449cbd seafileltd/seafile-mc:13.0-latest "/sbin/my_init -- /s…" 4 weeks ago Up 4 weeks (healthy) 80/tcp seafile 3d5f886cd84f seafileltd/sdoc-server:2.0-latest "/sbin/my_init -- /s…" 4 weeks ago Up 4 weeks 80/tcp seadoc 56512536c478 redis "docker-entrypoint.s…" 4 weeks ago Up 4 weeks 6379/tcp seafile-redis f8539e3ffbd2 mariadb:10.11 "docker-entrypoint.s…" 4 weeks ago Up 4 weeks (healthy) 3306/tcp seafile-mysql d7f689650752 lucaslorentz/caddy-docker-proxy:2.12-alpine "/bin/caddy docker-p…" 4 weeks ago Up 4 weeks (healthy) 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcp, 2019/tcp seafile-caddy
Es geht auch
docker compose watch
mit einer solchen Ausgabe:
[+] up 5/5 ✔ Container seafile-redis Running 0.0s ✔ Container seafile-mysql Healthy 0.5s ✔ Container seadoc Running 0.0s ✔ Container seafile-caddy Running 0.0s ✔ Container seafile Running 0.0s none of the selected services is configured for watch, consider setting a 'develop' section
Seafile updaten
Ihr wechselt zum Benutzer root und in den Ordner
cd /opt/seafile/
und führt folgende Befehle aus:
docker compose pull
sucht nach neueren Versionen der Container. Nur wenn er hier etwas findet und herunterlädt müsst Ihr weitermachen!
Alle Container stoppen:
docker compose down
Und mit den neuen Versionen neu erstellen und starten:
docker compose up -d
Etwas warten, ggf. werden auch innerhalb der Container Dinge nachinstalliert, ggf. prüft Ihr die Logs:
docker logs -f seafile
Danach könnt Ihr die alten Versionen der Container löschen:
docker image prune
Mehr ist es nicht!
