public_notes/content/20240324102024 Umamiのインストール.md

222 lines
No EOL
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 20240324102024 Umamiのインストール
#server #umami #raspi
[Umami](https://umami.is/) はアクセス解析。cookieとかを使わない。
ここに書いてある通りにやる: [Docs: Installation Umami](https://umami.is/docs/install) が、gitではなくリリース版を使う。
データベースは MariaDBを入れた: [[20240324102510 MySQL MariaDBのインストール]]
Umami用DBを作る(ユーザーがrootでいいのだろうか)
```
$ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 33
Server version: 10.11.6-MariaDB-0+deb12u1 Debian 12
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE umami_db;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> Ctrl-C -- exit!
Aborted
```
```
$ sudo npm install -g yarn
$ wget https://github.com/umami-software/umami/archive/refs/tags/v2.11.0.tar.gz
$ cd umami
$ npm i
```
20240407 最新だと `npm i` で下記エラーになる
```
$ npm i
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving: umami@2.11.0
npm ERR! Found: @prisma/client@5.11.0
npm ERR! node_modules/@prisma/client
npm ERR! @prisma/client@"5.11.0" from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer @prisma/client@"^4.8.0" from @umami/prisma-client@0.14.0
npm ERR! node_modules/@umami/prisma-client
npm ERR! @umami/prisma-client@"^0.14.0" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR!
npm ERR! For a full report see:
npm ERR! /home/kazbo/.npm/_logs/2024-04-07T07_05_54_650Z-eresolve-report.txt
npm ERR! A complete log of this run can be found in: /home/kazbo/.npm/_logs/2024-04-07T07_05_54_650Z-debug-0.log
```
```
$ npm i --force --ignore-scripts
```
で最後までいけた。
umamiのディレクトリ内で.envファイルを作成。 umami_dbは↑で作成した名前
```
DATABASE_URL=mysql://[username]:[password]@localhost:3306/umami_db
```
```
$ yarn build
```
でエラーになり、
```
✗ Command failed: prisma migrate deploy
Error: P3009
migrate found failed migrations in the target database, new migrations will not be applied. Read more about how to resolve migration issues in a production database: https://pris.ly/d/migrate-resolve
The `05_add_visit_id` migration started at 2024-04-07 07:47:46.598 UTC failed
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: "check-db" exited with 1.
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
```
こうなった場合は、
```
$ npx prisma migrate resolve --applied "05_add_visit_id"
```
をやってみる。 cf: [prisma migrate deploy Error: P3009 · Issue #2645 · umami-software/umami · GitHub](https://github.com/umami-software/umami/issues/2645#issuecomment-2038626975)
port :3000は[[20240312115855 Raspi4 GiteaからForgejoに変更してみる|forgejo]]が使っていたので、ポートを変更して起動。
```
$ yarn start -p 3100
```
ここまでやってローカル :3100にブラウザでアクセス、表示されればOK。
以下はトンネルの構成とかnginxでどうやってアクセスしたいかによってケースバイケースの内容なので普遍性は無い。
`umami.kinoshita-lab.org`でアクセスしたい場合。
## Cloudflare経由のトンネル
[[20240211202623 Raspi4 Cloudflare tunnel経由でhttpsサーバーを公開する]] あたりを参照、 .cloudflared/config.yaml のingressに下記を追加
```
- hostname: umami.kinoshita-lab.org
service: http://localhost
```
で再起動。
## nginxの設定
あまりよくわかっていないのでforgejoの設定とほぼ同じ
```
# umami
server {
listen 80;
listen [::]:80;
server_name umami.kinoshita-lab.org;
location / {
# make wnginx use unescaped URI, keep "%2F" as is
proxy_pass http://127.0.0.1:3100;
proxy_set_header Connection $http_connection;
proxy_set_header Upgrade $http_upgrade;
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 $scheme;
}
}
```
nginxを再起動。 `umami.kinoshita-lab.org` 経由でumamiにアクセスできることを確認。
## systemctlに追加
こんなのを /etc/systemd/systemに追加して
```
[Unit]
Description = umami
[Service]
WorkingDirectory=/home/kazbo/umami
ExecStart = yarn start -p 3100
Restart = always
Type = simple
User = kazbo
[Install]
WantedBy = multi-user.target
```
起動、こんな感じで動いていればOK(多分)
```
$ sudo systemctl daemon-reload
$ sudo systemctl start umami
$ sudo systemctl status umami
● umami.service - umami
Loaded: loaded (/etc/systemd/system/umami.service; disabled; preset: enabled)
Active: active (running) since Sun 2024-03-24 11:27:18 JST; 4s ago
Main PID: 99500 (node)
Tasks: 23 (limit: 3916)
CPU: 1.979s
CGroup: /system.slice/umami.service
├─99500 node /usr/local/bin/yarn start -p 3100
├─99511 /bin/sh -c "next start -p 3100"
└─99512 next-server
Mar 24 11:27:18 saipi4 systemd[1]: Started umami.service - umami.
Mar 24 11:27:18 saipi4 yarn[99500]: yarn run v1.22.22
Mar 24 11:27:18 saipi4 yarn[99500]: warning ../package.json: No license field
Mar 24 11:27:18 saipi4 yarn[99500]: $ next start -p 3100
Mar 24 11:27:19 saipi4 yarn[99512]: ▲ Next.js 14.1.0
Mar 24 11:27:19 saipi4 yarn[99512]: - Local: http://localhost:3100
Mar 24 11:27:19 saipi4 yarn[99512]: ⚠ "next start" does not work with "output: standalone" configuration. Use "node .next/standalone/server.js" instead.
Mar 24 11:27:19 saipi4 yarn[99512]: ✓ Ready in 1089ms
```
## umamiの設定
- umamiにログイン、とりあえず日本語化
- + Webサイトの追加 名前とドメインを入力
### quartzの設定
quartz.configのそれっぽい所に下記を追加・・・すればうまくいくはずだが、
```
analytics: {
provider: "umami",
websiteId: "**",
host: "https://umami.kinoshita-lab.org/script.js"
}
```
hostのところを入力すると、下記エラーになる。
```
⠋ Emitting output files
ERROR
Failed to emit from plugin `ComponentResources`: Transform failed with 1 error:
<stdin>:13:29: ERROR: Expected ";" but found ":"
<stdin>:13:29: ERROR: Expected ";" but found ":"
at Socket.emit (node:events:519:28)
at addChunk (node:internal/streams/readable:559:12)
at readableAddChunkPushByteMode (node:internal/streams/readable:510:3)
at Socket.Readable.push (node:internal/streams/readable:390:5)
at Pipe.onStreamRead (node:internal/stream_base_commons:190:23)
```
しかたがないのでHead.tsxに下記追加で動かしている。
```
<script defer src="https://umami.kinoshita-lab.org/script.js" data-website-id="****"></script>
```
## Refs.
- [Docs: Installation Umami](https://umami.is/docs/install)