So installierst du Focalboard Project Management unter Ubuntu 20.04
Focalboard ist eine kostenlose, quelloffene und selbst gehostete Projektmanagement-Anwendung, mit der du die Arbeit von Teams organisieren, verfolgen und verwalten kannst. Es ist eine selbst gehostete und sehr gute Alternative zu anderen Projektmanagement-Anwendungen wie Trello, Notion und Asana. Mit Focalboard können wir Projekte auf verschiedenen Systemen wie Windows, Mac oder Linux verwalten.
Focalboard bietet die folgenden Funktionen:
- Drag-and-Drop-Karten
- Volle Kontrolle über die Karten
- Board importieren und exportieren
- Unterstützt mehrere Sprachen
- Filterung von Karten und Aufgaben nach Status, Fälligkeitsdatum usw.
In diesem Beitrag zeigen wir dir, wie du Focalboard mit Nginx als Reverse Proxy auf Ubuntu 20.04 installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 20.04 läuft.
- Ein gültiger Domainname, der auf die IP deines Servers zeigt.
- Ein Root-Passwort ist auf dem Server konfiguriert.
PostgreSQL installieren und konfigurieren
Focalboard verwendet PostgreSQL als Datenbank-Backend. Daher musst du den PostgreSQL-Datenbankserver auf deinem System installieren.
Du kannst ihn zusammen mit anderen Paketen installieren, indem du den folgenden Befehl verwendest:
apt-get install curl wget gnupg2 -y apt-get install postgresql postgresql-contrib -y
Sobald PostgreSQL installiert ist, melde dich mit folgendem Befehl bei PostgreSQL an:
su - postgres psql
Als Nächstes erstellst du eine Datenbank und einen Benutzer für PostgreSQL mit dem folgenden Befehl:
CREATE DATABASE focalboards; CREATE USER focaluser WITH PASSWORD 'password';
Verlasse die PostgreSQL-Shell mit folgendem Befehl:
\q exit
Sobald du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Focalboard installieren und konfigurieren
Lade zunächst die neueste Version von Focalboard mit dem folgenden Befehl herunter:
VER=$(curl -s https://api.github.com/repos/mattermost/focalboard/releases/latest|grep tag_name | cut -d '"' -f 4) wget https://github.com/mattermost/focalboard/releases/download/${VER}/focalboard-server-linux-amd64.tar.gz
Entpacke dann die heruntergeladene Datei mit folgendem Befehl:
tar -xvzf focalboard-server-linux-amd64.tar.gz
Als Nächstes verschiebst du das Focalboard mit folgendem Befehl in das Verzeichnis /opt:
mv focalboard /opt
Als Nächstes bearbeitest du die Konfigurationsdatei von Focalboard:
nano /opt/focalboard/config.json
Definiere deine Datenbank wie unten gezeigt:
"dbtype": "postgres", "dbconfig": "postgres://focaluser:password@localhost/focalboards?sslmode=disable&connect_timeout=10",
Speichere und schließe die Datei, wenn du fertig bist.
Eine Systemd-Dienstdatei für Focalboard erstellen
Als Nächstes musst du eine systemd-Dienstdatei erstellen, um den Focalboard-Dienst zu verwalten. Du kannst sie mit dem folgenden Befehl erstellen:
nano /lib/systemd/system/focalboard.service
Füge die folgenden Zeilen ein:
[Unit] Description=Focalboard server [Service] Type=simple Restart=always RestartSec=5s ExecStart=/opt/focalboard/bin/focalboard-server WorkingDirectory=/opt/focalboard [Install] WantedBy=multi-user.target
Speichere und schließe die Datei und lade den systemd-Daemon neu, um die Änderungen zu übernehmen:
systemctl daemon-reload
Als Nächstes startest und aktivierst du den Focalboard-Dienst mit dem folgenden Befehl:
systemctl start focalboard systemctl enable focalboard
Jetzt kannst du den Status des Focalboards mit dem folgenden Befehl überprüfen:
systemctl status focalboard
Du erhältst die folgende Ausgabe:
? focalboard.service - Focalboard server Loaded: loaded (/lib/systemd/system/focalboard.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2022-02-27 09:54:03 UTC; 6s ago Main PID: 9608 (focalboard-serv) Tasks: 4 (limit: 2348) Memory: 15.7M CGroup: /system.slice/focalboard.service ??9608 /opt/focalboard/bin/focalboard-server Feb 27 09:54:06 ubuntupc focalboard-server[9608]: debug [2022-02-27 09:54:06.035 Z] listener(s) for blockID caller="ws/serve> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: debug [2022-02-27 09:54:06.035 Z] listener(s) for blockID caller="ws/serve> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: debug [2022-02-27 09:54:06.038 Z] listener(s) for workspaceID caller="ws/serve> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: debug [2022-02-27 09:54:06.038 Z] listener(s) for blockID caller="ws/serve> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: debug [2022-02-27 09:54:06.038 Z] listener(s) for blockID caller="ws/serve> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: debug [2022-02-27 09:54:06.038 Z] import archive - done caller="app/impo> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: info [2022-02-27 09:54:06.041 Z] initialized workspace caller="app/work> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: info [2022-02-27 09:54:06.047 Z] Server.Start caller="server/s> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: info [2022-02-27 09:54:06.047 Z] http server started caller="web/webs> Feb 27 09:54:06 ubuntupc focalboard-server[9608]: info [2022-02-27 09:54:06.053 Z] Starting unix socket server caller="server/s>
Zu diesem Zeitpunkt ist Focalboard gestartet und läuft. Du kannst die lauschenden Ports mit dem folgenden Befehl überprüfen:
ss -antpl | grep focalboard
Du erhältst die folgende Ausgabe:
LISTEN 0 4096 *:8000 *:* users:(("focalboard-serv",pid=9608,fd=8)) LISTEN 0 4096 *:9092 *:* users:(("focalboard-serv",pid=9608,fd=9))
Wenn du damit fertig bist, kannst du mit dem nächsten Schritt fortfahren.
Nginx als Reverse Proxy konfigurieren
Als Nächstes musst du Nginx als Reverse Proxy installieren und konfigurieren, damit du über Port 80 auf das Focalboard zugreifen kannst. Installiere zunächst den Nginx-Server mit dem folgenden Befehl:
apt-get install nginx -y
Sobald der Nginx-Server installiert ist, erstellst du eine Konfigurationsdatei für den virtuellen Nginx-Host:
nano /etc/nginx/conf.d/focalboard.conf
Füge die folgenden Zeilen hinzu:
upstream focalboard { server localhost:8000; keepalive 32; } server { listen 80; server_name focalboard.example.com; location ~ /ws/* { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; client_max_body_size 50M; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_buffers 256 16k; proxy_buffer_size 16k; client_body_timeout 60; send_timeout 300; lingering_timeout 5; proxy_connect_timeout 1d; proxy_send_timeout 1d; proxy_read_timeout 1d; proxy_pass http://focalboard; } location / { client_max_body_size 50M; proxy_set_header Connection ""; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; proxy_buffers 256 16k; proxy_buffer_size 16k; proxy_read_timeout 600s; proxy_cache_revalidate on; proxy_cache_min_uses 2; proxy_cache_use_stale timeout; proxy_cache_lock on; proxy_http_version 1.1; proxy_pass http://focalboard; } }
Speichere und schließe die Datei, wenn du fertig bist. Überprüfe dann Nginx mit folgendem Befehl auf Syntaxkonfigurationsfehler:
nginx -t
Du erhältst die folgende Ausgabe:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Starte anschließend den Nginx-Dienst neu, um die Konfigurationsänderungen zu übernehmen:
systemctl restart nginx
Du kannst den Nginx-Status auch mit dem folgenden Befehl überprüfen:
systemctl status nginx
Du solltest die folgende Ausgabe sehen:
? nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2022-02-27 09:56:12 UTC; 4s ago Docs: man:nginx(8) Process: 10110 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 10121 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 10127 (nginx) Tasks: 2 (limit: 2348) Memory: 2.6M CGroup: /system.slice/nginx.service ??10127 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; ??10128 nginx: worker process Feb 27 09:56:11 ubuntupc systemd[1]: Starting A high performance web server and a reverse proxy server... Feb 27 09:56:12 ubuntupc systemd[1]: Started A high performance web server and a reverse proxy server.
Zugriff auf die Focalboard-Weboberfläche
Öffne nun deinen Webbrowser und rufe die Focalboard-Weboberfläche über die URL http://focalboard.example.com auf. Du wirst auf die Anmeldeseite von Focalboard weitergeleitet:
Klicke auf die Schaltfläche “ Konto erstellen „. Du solltest die Seite zur Erstellung eines Focalboard-Kontos sehen:
Gib deine E-Mail-Adresse, deinen Admin-Benutzernamen und dein Passwort ein und klicke auf die Schaltfläche “ Registrieren „. Auf der folgenden Seite solltest du das Focalboard-Dashboard sehen:
Focalboard mit Let’s Encrypt SSL sichern
Als Nächstes musst du das Certbot Client-Paket installieren, um Let’s Encrypt SSL zu installieren und zu verwalten. Installiere zunächst Certbot mit dem folgenden Befehl:
apt-get install python3-certbot-nginx -y
Sobald die Installation abgeschlossen ist, führst du den folgenden Befehl aus, um Let’s Encrypt SSL auf deiner Website zu installieren:
certbot --nginx -d focalboard.example.com
Du wirst aufgefordert, eine gültige E-Mail-Adresse anzugeben und die Nutzungsbedingungen zu akzeptieren (siehe unten):
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): hitjethva@gmail.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for focalboard.example.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/conf.d/focalboard.conf
Als Nächstes wählst du aus, ob der HTTP-Datenverkehr auf HTTPS umgeleitet werden soll oder nicht (siehe unten):
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Gib 2 ein und drücke die Eingabetaste, um die Installation abzuschließen. Du solltest die folgende Ausgabe sehen:
Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/focalboard.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://focalboard.example.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=focalboard.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/focalboard.example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/focalboard.example.com/privkey.pem Your cert will expire on 2022-05-27. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le - We were unable to subscribe you the EFF mailing list because your e-mail address appears to be invalid. You can try again later by visiting https://act.eff.org.
Fazit
Herzlichen Glückwunsch! Du hast Focalboard erfolgreich mit Nginx als Reverse Proxy auf Ubuntu 20.04 installiert. Jetzt kannst du Focalboard nutzen, um deine Projekte einfach über den Webbrowser zu verwalten und zu verfolgen. Wenn du noch Fragen hast, kannst du dich gerne an mich wenden.