Closed4

MisskeyをRaspberry Piにぶっこむメモ(Systemd編)

Kumasun MorinoKumasun Morino

前提条件

  • Raspberry Pi 4B (4GB RAM) ⁺ USBブート
  • Raspberry Pi OS (debian/bullseyeベース)
  • 自動インストールスクリプトを使う
  • PostgreSQLもRedisもローカルで動かす
  • Nginxは入れない(localhost:3000で動かす)
Kumasun MorinoKumasun Morino

ぶつかった問題

Nginxが入らない

Process: apt install #1;
Hit:1 http://deb.debian.org/debian bullseye InRelease
Hit:2 http://deb.debian.org/debian bullseye-updates InRelease                                                  
Hit:3 http://security.debian.org/debian-security bullseye-security InRelease                                   
Hit:4 http://archive.raspberrypi.org/debian bullseye InRelease                                                 
Ign:5 http://nginx.org/packages/ubuntu bullseye InRelease                 
Err:6 http://nginx.org/packages/ubuntu bullseye Release
  404  Not Found [IP: 2a05:d014:edb:5702::6 80]
Reading package lists... Done
E: The repository 'http://nginx.org/packages/ubuntu bullseye Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

原因

  • ubuntuに"bullseye"というリリースは存在しない

解決方法

自動インストールスクリプト内で設定されているディストリを "uduntu" から "debian" に切り替える

ubuntu.sh
506c506
<       echo "deb http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | tee /etc/apt/sources.list.d/nginx.list;
---
>       echo "deb http://nginx.org/packages/debian $(lsb_release -cs) nginx" | tee /etc/apt/sources.list.d/nginx.list;

Redisが入らない

Process: apt install #2;
Err:1 https://apt.postgresql.org/pub/repos/apt bullseye-pgdg InRelease
  Temporary failure resolving 'apt.postgresql.org'
Hit:2 http://deb.debian.org/debian bullseye InRelease                                                                                                              
Hit:3 http://deb.debian.org/debian bullseye-updates InRelease                                                                                                      
Hit:4 http://security.debian.org/debian-security bullseye-security InRelease                                                                                       
Hit:5 https://deb.nodesource.com/node_18.x bullseye InRelease                                                                                                      
Ign:6 http://ppa.launchpad.net/redislabs/redis/ubuntu kinetic InRelease                                                                                            
Hit:7 http://archive.raspberrypi.org/debian bullseye InRelease      
Hit:8 https://packages.redis.io/deb bullseye InRelease                         
Err:9 http://ppa.launchpad.net/redislabs/redis/ubuntu kinetic Release          
  404  Not Found [IP: 2620:2d:4000:1::3e 80]
Reading package lists... Done
E: The repository 'http://ppa.launchpad.net/redislabs/redis/ubuntu kinetic Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

原因

redislabsが提供するkineticリポジトリにarmhf用パッケージが存在しない

解決方法

Redis公式サイトにある、Debian用レポジトリを追加する
すでにスクリプトを走らせちゃってコケてる場合は、レポジトリが追加されちゃってるので消しておく

user@misskey:~$ sudo rm /etc/apt/sources.list.d/redislabs-ubuntu-redis-kinetic.list
ubuntu.sh
540c540,543
<       add-apt-repository ppa:redislabs/redis -y;
---
> 
>       curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
>       echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
>       # add-apt-repository ppa:redislabs/redis -y;

データベースにroleとdatabaseがすでに存在するからダメって言われた

解決方法

roleとdatabaseを抹消する

user@misskey:~$ sudo su - postgres
postgres@misskey:~$ dropdb mk1
postgres@misskey:~$ dropuser misskey
postgres@misskey:~$ exit
logout
user@misskey:~$
Kumasun MorinoKumasun Morino

ぶつかった問題 Part2

ビルドに失敗する

Process: build misskey;

> misskey@12.118.1 build
> node ./scripts/build.js

building packages/backend ...

> build
> tsc -p tsconfig.json || echo done. && tsc-alias -p tsconfig.json

node_modules/@bull-board/api/dist/src/queueAdapters/bull.d.ts:1:28 - error TS7016: Could not find a declaration file for module 'bull'. '/home/misskey/misskey/packa
ges/backend/node_modules/bull/index.js' implicitly has an 'any' type.
   Try `npm i --save-dev @types/bull` if it exists or add a new declaration (.d.ts) file containing `declare module 'bull';`
 
 1 import { Job, Queue } from 'bull';
                              ~~~~~~
(中略)
 
 Found 648 errors in 175 files.
 
 Errors  Files
      1  node_modules/@bull-board/api/dist/src/queueAdapters/bull.d.ts:1
      1  node_modules/@tensorflow/tfjs-backend-webgl/dist/backend_webgl.d.ts:113
      2  node_modules/@tensorflow/tfjs-backend-webgl/dist/canvas_util.d.ts:19

(中略)

 Check: If Misskey starts correctly;
 (node:53703) ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time
 (Use `node --trace-warnings ...` to show where the warning was created)
        NG.

原因

ぜんぜんわからん…
node_modulesが悪さをしているように思う

解決方法

ぜんぜんわからん…

Kumasun MorinoKumasun Morino

systemdを使う方法は諦めて、dockerを使う方法でいこうと思う

この件は一旦クローズとさせていただく

このスクラップは2022/08/18にクローズされました