[LINUX] [V11 ~] Un mémorandum à mettre dans Misskey

Préface

Auparavant, j'avais écrit la version jusqu'à Misskey v10, mais la procédure d'installation a changé en raison de l'utilisation de Postgresql à partir de la v11 ou d'une version ultérieure. Cette section décrit comment installer la version 11 ou ultérieure.

Cliquez ici pour la version 10 et antérieure: https://qiita.com/YuzuRyo61/items/7105d16ac75c78899f1c

Cet article est basé sur les séries Ubuntu et Debian.

Étape 0. Mettre à niveau les packages existants

Ceci est une procédure de routine.

sudo apt update
sudo apt upgrade -y

Il est recommandé de redémarrer après la mise à niveau.

Étape 1. Installez les packages requis

Misskey nécessite Node.js (v11.10.1 ou version ultérieure), PostgreSQL (v10 ou version ultérieure) et Redis. La recherche élastique est également disponible en option, mais cette fois elle est omise. Puisque le fil est recommandé, nous allons également introduire du fil.

Ensuite, utilisez nginx comme proxy inverse.

Node.js

Installez Node.js via Nodesource. Pour Linux sur un autre système de gestion de paquets, tel que CentOS, cliquez sur Voir le README dans ce référentiel.

# 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

Introduit à partir du référentiel de fils officiel.

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

Depuis le référentiel par défaut.

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

Redis

Ceci est également extrait du référentiel par défaut tel quel.

sudo apt install redis-server

nginx

Depuis le référentiel officiel nginx. Je ne suis pas particulier à ce sujet, je vais donc mettre une version stable.

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 #Ceci est pour confirmation.
sudo apt update
sudo apt install nginx

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

Autre

Présentez build-essential.

sudo apt install build-essential

terminer

Démarrez le service.

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

Étape 2. Création d'un utilisateur opérationnel

Spécifiez l'utilisateur à démarrer. Le nom d'utilisateur est arbitraire.

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

Étape 3. Clonez le référentiel

Clonez le référentiel et recherchez la dernière version.

git clone -b master https://github.com/syuilo/misskey.git
cd misskey
#La version est https://github.com/syuilo/misskey/releases/Voir les dernières
git checkout <12.x.x>

Étape 4. Installez le package

Installez le paquet avec du fil. Assurez-vous que yarn.lock n'est pas remplacé.

yarn install --pure-lockfile

Étape 5. Créez un fichier de paramètres

Créez default.yml en copiant example.yml.

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

Définissez default.yml en fonction des commentaires à l'intérieur.

Étape 6. Construire

Construisez Misskey. Cela peut prendre un certain temps.

NODE_ENV=production yarn build

Étape 7. Initialisation de la base de données

Initialisez la base de données pour qu'elle puisse être utilisée.

yarn run init

Étape 8. Commencez la vérification et enregistrez-vous avec systemd

Vous pouvez vérifier le démarrage avec la commande suivante. Si vous pouvez le confirmer, appuyez sur Ctrl-C pour arrêter le serveur.

NODE_ENV=production yarn start

Inscrivez-vous avec systemd

/etc/systemd/system/misskey.service


[Unit]
Description=Misskey daemon

[Service]
Type=simple
User=misskey #Si le nom d'utilisateur est différent, veuillez le changer
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey #Veuillez changer en fonction de l'environnement
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=misskey
Restart=always

[Install]
WantedBy=multi-user.target

Après le paramétrage, exécutez systemctl daemon -reload pour mettre à jour la liste des services.

Avec systemctl enable misskey, misskey s'exécute au démarrage.

Démarrez-le avec systemctl start miss key.

Étape 9. Paramètres de proxy inverse Nginx

Enfin, configurez le proxy inverse pour nginx.

Le nom du fichier est arbitraire. S'il y a des changements, veuillez changer en conséquence.

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

Une fois définis, appliquez les modifications avec systemctl restart nginx.


Ceci termine les réglages: tada:

Ex. Pour mettre à jour

S'il y a une mise à jour, accédez d'abord au répertoire où Misskey est installé. Entrez ensuite les commandes suivantes dans l'ordre du haut.

git fetch
git checkout <12.x.x> #Saisissez la dernière version du tag
yarn install --pure-lockfile
NODE_ENV=production yarn build
yarn migrate

Entrez la commande ci-dessus, et s'il n'y a aucune erreur, redémarrez le service misskey. Ceci termine la mise à jour.

Recommended Posts

[V11 ~] Un mémorandum à mettre dans Misskey
Pour ajouter un module à python que vous mettez dans Julialang
J'ai fait un script pour mettre un extrait dans README.md
Un mémorandum sur l'utilisation de keras.preprocessing.image de Keras
Un mémorandum pour exécuter un script python dans un fichier bat
[Linux] Comment mettre votre IP dans une variable
Combinez des listes dans un DataFrame avec des pandas
Comment mettre un lien symbolique
Un mémorandum pour passer à Manjaro Linux
Essayez de mettre des données dans MongoDB
Je veux imprimer dans la notation d'inclusion
[Itertools.permutations] Comment créer une séquence en Python
PUT gzip directement dans S3 en Python
Comment obtenir stacktrace en python
[Python] Comment mettre n'importe quel nombre d'entrées standard dans la liste
Comment mettre un espace demi-largeur avant les lettres et les chiffres en Python.
Un mémorandum parce que j'ai trébuché en essayant d'utiliser MeCab avec Python
Un mémorandum pour faire WebDAV uniquement avec nginx
Calculons en fait le problème statistique avec Python
Comment effacer un taple dans une liste (Python)
Je veux créer une fenêtre avec Python
Comment créer un fichier JSON en Python
3 étapes pour mettre Python + mecab dans yum uniquement
Une manière intelligente de chronométrer le traitement avec Python
Comment implémenter un sélecteur de dégradé dans Houdini
Étapes pour développer une application Web en Python
Un mémorandum expliquant comment exécuter la commande magique! Sudo dans Jupyter Notebook
Comment notifier les canaux Discord en Python
[Python] Comment dessiner un histogramme avec Matplotlib
Comment créer une API Rest dans Django
Créez un environnement PYNQ sur Ultra96 V2 et connectez-vous à Jupyter Notebook
Comment écrire un document tuple nommé en 2020
Comment compter les nombres dans une plage spécifique
Sortie d'une courte chaîne de caractères de type URL en Python
Comment lire des fichiers dans différents répertoires
Supplément à "Calibration de la caméra" des didacticiels OpenCV-Python
Comment se moquer d'une fonction publique dans Pytest
Exemple pour mettre Python Kivy dans un fichier
Mémorandum des commandes, packages, termes, etc. utilisés sous Linux (mis à jour de temps en temps)
Comprendre le rendement Python Si vous mettez le rendement dans une fonction, elle se transforme en générateur
Comment spécifier un schéma dans les paramètres de la base de données Django
Analyser une chaîne JSON écrite dans un fichier en Python
Comment convertir / restaurer une chaîne avec [] en python
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Diverses méthodes pour extraire les colonnes du tableau NumPy
Essayez de créer un module Python en langage C
Je veux générer rapidement UUID (memo memo) ~ Edition Python ~
Je veux faire la transition avec un bouton sur le ballon
Je veux écrire en Python! (2) Écrivons un test
[Python] Comment développer des variables dans une chaîne de caractères
Un mémorandum lors de l'écriture de code expérimental ~ Se connecter en python
Créer un plugin pour exécuter Python Doctest sur Vim (2)
J'ai essayé d'implémenter un pseudo pachislot en Python
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Je veux échantillonner au hasard un fichier avec Python
Je veux travailler avec un robot en python.
Choses à noter lors de l'initialisation d'une liste en Python
Comment afficher DataFrame sous forme de tableau dans Markdown
Que faire si une erreur de décodage Unicode se produit dans pip