[LINUX] [V11 ~] Ein Memorandum für Misskey

Vorwort

Zuvor habe ich die Version auf Misskey v10 geschrieben, aber das Installationsverfahren hat sich aufgrund der Verwendung von Postgresql ab v11 oder höher geändert. In diesem Abschnitt wird beschrieben, wie Sie Version 11 oder höher installieren.

Klicken Sie hier für Version 10 und früher: https://qiita.com/YuzuRyo61/items/7105d16ac75c78899f1c

Dieser Artikel basiert auf den Serien Ubuntu und Debian.

Schritt 0. Aktualisieren Sie vorhandene Pakete

Dies ist eine Routineprozedur.

sudo apt update
sudo apt upgrade -y

Es wird empfohlen, nach dem Upgrade neu zu starten.

Schritt 1. Installieren Sie die erforderlichen Pakete

Für Misskey sind Node.js (Version 11.10.1 oder höher), PostgreSQL (Version 10 oder höher) und Redis erforderlich. Optional ist auch eine elastische Suche verfügbar, diesmal wird sie jedoch weggelassen. Da Garn empfohlen wird, werden wir auch Garn einführen.

Verwenden Sie dann nginx als Reverse-Proxy.

Node.js

Installieren Sie Node.js über Nodesource. Klicken Sie unter Linux auf einem anderen Paketverwaltungssystem wie CentOS auf Siehe README-Datei in diesem Repository.

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

https://github.com/nodesource/distributions#installation-instructions

yarn

Eingeführt aus dem offiziellen Garnlager.

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn

https://classic.yarnpkg.com/ja/docs/install#debian-stable

PostgreSQL

Aus dem Standard-Repository.

sudo apt install postgresql-10 postgresql-server-dev-10

Redis

Dies wird auch so wie es ist aus dem Standard-Repository abgerufen.

sudo apt install redis-server

nginx

Aus dem offiziellen Nginx-Repository. Ich bin nicht besonders darüber, also werde ich eine stabile Version einfügen.

sudo apt install curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
sudo apt-key fingerprint ABF5BD827BD9BF62 #Dies dient zur Bestätigung.
sudo apt update
sudo apt install nginx

http://nginx.org/en/linux_packages.html#Ubuntu

Andere

Build-Essential einführen.

sudo apt install build-essential

Fertig

Starten Sie den Dienst.

sudo systemctl start nginx postgresql redis-server
sudo systemctl enable nginx postgresql redis-server

Schritt 2. Erstellen eines operativen Benutzers

Geben Sie den Benutzer an, der gestartet werden soll. Der Benutzername ist beliebig.

sudo adduser --disabled-password --disabled-login misskey
sudo su - misskey

Schritt 3. Klonen Sie das Repository

Klonen Sie das Repository und suchen Sie nach der neuesten Version.

git clone -b master https://github.com/syuilo/misskey.git
cd misskey
#Die Version ist https://github.com/syuilo/misskey/releases/Siehe neueste
git checkout <12.x.x>

Schritt 4. Installieren Sie das Paket

Installieren Sie die Packung mit Garn. Stellen Sie sicher, dass das Garnschloss nicht ersetzt wird.

yarn install --pure-lockfile

Schritt 5. Erstellen Sie eine Einstellungsdatei

Erstellen Sie die Datei default.yml, indem Sie example.yml kopieren.

cp .config/example.yml .config/default.yml

Stellen Sie default.yml gemäß den darin enthaltenen Kommentaren ein.

Schritt 6. Erstellen

Baue Misskey. Dies kann einige Zeit dauern.

NODE_ENV=production yarn build

Schritt 7. Datenbankinitialisierung

Initialisieren Sie die Datenbank, damit sie verwendet werden kann.

yarn run init

Schritt 8. Starten Sie die Überprüfung und registrieren Sie sich bei systemd

Sie können den Start mit dem folgenden Befehl überprüfen. Wenn Sie dies bestätigen können, stoppen Sie den Server mit Strg-C.

NODE_ENV=production yarn start

Registrieren Sie sich bei systemd

/etc/systemd/system/misskey.service


[Unit]
Description=Misskey daemon

[Service]
Type=simple
User=misskey #Wenn der Benutzername anders ist, ändern Sie ihn bitte
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey #Bitte ändern Sie je nach Umgebung
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

Führen Sie nach dem Einstellen systemctl daemon -reload aus, um die Serviceliste zu aktualisieren.

Mit systemctl enable misskey wird misskey beim Start ausgeführt.

Starten Sie es mit systemctl start miss key.

Schritt 9. Nginx Reverse Proxy-Einstellungen

Richten Sie abschließend den Reverse-Proxy für Nginx ein.

Der Dateiname ist beliebig. Wenn es Änderungen gibt, ändern Sie diese bitte entsprechend.

nginx:/etc/nginx/conf.d/misskey.conf


# Sample nginx configuration for Misskey
#
# 1. Replace example.tld to your domain
# 2. Copy to /etc/nginx/sites-available/ and then symlink from /etc/nginx/sites-enabled/
#    or copy to /etc/nginx/conf.d/

# For WebSocket
map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      close;
}

proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;

server {
    listen 80;
    listen [::]:80;
    server_name example.tld;

    # For SSL domain validation
    root /var/www/html;
    location /.well-known/acme-challenge/ { allow all; }
    location /.well-known/pki-validation/ { allow all; }
    location / { return 301 https://$server_name$request_uri; }
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name example.tld;
    ssl_session_cache shared:ssl_session_cache:10m;

    # To use Let's Encrypt certificate
    ssl_certificate     /etc/letsencrypt/live/example.tld/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;

    # To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
    #ssl_certificate     /etc/ssl/certs/ssl-cert-snakeoil.pem;
    #ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;

    # SSL protocol settings
    ssl_protocols TLSv1 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:AES128-SHA;
    ssl_prefer_server_ciphers on;

    # Change to your upload limit
    client_max_body_size 80m;

    # Proxy to Node
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $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 https;
        proxy_http_version 1.1;
        proxy_redirect off;

        # For WebSocket
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        # Cache settings
        proxy_cache cache1;
        proxy_cache_lock on;
        proxy_cache_use_stale updating;
        add_header X-Cache $upstream_cache_status;
    }
}

https://github.com/syuilo/misskey/blob/develop/docs/examples/misskey.nginx

Übernehmen Sie die Änderungen nach dem Festlegen mit systemctl restart nginx.


Damit sind die Einstellungen abgeschlossen: tada:

Bsp. Zum Aktualisieren

Wenn es ein Update gibt, wechseln Sie zuerst in das Verzeichnis, in dem Misskey installiert ist. Geben Sie dann die folgenden Befehle in der Reihenfolge von oben ein.

git fetch
git checkout <12.x.x> #Geben Sie die neueste Version des Tags ein
yarn install --pure-lockfile
NODE_ENV=production yarn build
yarn migrate

Geben Sie den obigen Befehl ein und starten Sie den Misskey-Dienst neu, wenn keine Fehler vorliegen. Damit ist das Update abgeschlossen.

Recommended Posts

[V11 ~] Ein Memorandum für Misskey
So fügen Sie Python ein Modul hinzu, das Sie in Julialang eingefügt haben
Ich habe ein Skript erstellt, um ein Snippet in README.md einzufügen
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
[Linux] Wie Sie Ihre IP in eine Variable einfügen
Kombinieren Sie Listen zu einem DataFrame mit Pandas
So setzen Sie einen symbolischen Link
Ein Memorandum zur Umstellung auf Manjaro Linux
Versuchen Sie, Daten in MongoDB abzulegen
Ich möchte in der Einschlussnotation drucken
[Itertools.permutations] So löschen Sie eine Sequenz in Python
PUT gzip direkt in S3 in Python
Wie bekomme ich Stacktrace in Python?
[Python] So fügen Sie eine beliebige Anzahl von Standardeingaben in die Liste ein
So setzen Sie in Python ein Leerzeichen mit halber Breite vor Buchstaben und Zahlen.
Ein Memorandum, weil ich beim Versuch, MeCab mit Python zu verwenden, gestolpert bin
Ein Memorandum, um WebDAV nur mit Nginx zu erstellen
Berechnen wir das statistische Problem mit Python
So löschen Sie einen Taple in einer Liste (Python)
Ich möchte mit Python ein Fenster erstellen
So erstellen Sie eine JSON-Datei in Python
3 Schritte, um Python + Mecab nur in yum zu setzen
Eine clevere Möglichkeit zur Zeitverarbeitung mit Python
So implementieren Sie eine Verlaufsauswahl in Houdini
Schritte zum Entwickeln einer Webanwendung in Python
Ein Memorandum zur Ausführung des Befehls! Sudo magic in Jupyter Notebook
So benachrichtigen Sie Discord-Kanäle in Python
[Python] Wie zeichnet man mit Matplotlib ein Histogramm?
So erstellen Sie eine Rest-API in Django
Erstellen Sie eine PYNQ-Umgebung auf Ultra96 V2 und melden Sie sich bei Jupyter Notebook an
Wie schreibe ich ein benanntes Tupeldokument im Jahr 2020?
So zählen Sie Zahlen in einem bestimmten Bereich
Geben Sie eine kurze URL-ähnliche Zeichenfolge in Python aus
So lesen Sie Dateien in verschiedenen Verzeichnissen
Ergänzung zur "Kamerakalibrierung" von OpenCV-Python-Tutorials
Wie man eine öffentliche Funktion in Pytest verspottet
Beispiel, um Python Kivy in eine Datei zu packen
Memorandum über Befehle, Pakete, Begriffe usw., die unter Linux verwendet werden (von Zeit zu Zeit aktualisiert)
Python-Ertrag verstehen Wenn Sie Ertrag in eine Funktion einfügen, wird dieser in einen Generator geändert
So legen Sie das Schema in den Django-Datenbankeinstellungen fest
Analysieren Sie eine JSON-Zeichenfolge, die in eine Datei in Python geschrieben wurde
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Verschiedene Methoden zum Extrahieren von Spalten des NumPy-Arrays
Versuchen Sie, ein Python-Modul in C-Sprache zu erstellen
Ich möchte schnell UUID generieren (Gedenknotiz) ~ Python Edition ~
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
[Python] So erweitern Sie Variablen in einer Zeichenfolge
Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python
Erstellen Sie ein Plug-In, das Python Doctest auf Vim ausführt (2)
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Erstellen Sie ein Plug-In, um Python Doctest mit Vim (1) auszuführen.
Ich möchte eine Datei mit Python zufällig testen
Ich möchte mit einem Roboter in Python arbeiten.
Beachten Sie beim Initialisieren einer Liste in Python
So zeigen Sie DataFrame als Tabelle in Markdown an
Was tun, wenn in pip ein Unicode-Dekodierungsfehler auftritt?