検索条件
更新日:2026/10/21 投稿日:2026/10/20
Env
Ver
adiary
3.52b
fcgiwrap
1.1.0
nginx
1.24.0
/var/www/に展開すると仮定する。
git clone git@github.com:nabe-abk/adiary.git
cd adiary
cp adiary.conf.cgi.sample adiary.conf.cgi
sudo chown -R www-data:www-data .
IPv6でSSL化済の設定。fcgiwrapはデーモンとして動いているものとする。
server {
listen [::]:443 ssl;
server_name adiary.example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
client_max_body_size 100M;
root /var/www/adiary;
# 実在するファイルはそのまま返し、なければ404
location /pub/ { try_files $uri =404; }
location /pub-dist/ { try_files $uri =404; }
location /index.html { try_files $uri =404; }
# favicon
# システム設定があればそちらを優先、なければデフォルト
location = /favicon.ico { try_files /pub/lycolia/image/@system/sys-iconfile.png /pub-dist/default-icon.png =404; }
# adiaryに飛ばす用
# /でCGI、/index.htmlでセットアップページに飛ばすための分岐を実現するために、こうしている
location / {
try_files $uri @adiary;
}
location @adiary {
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root/adiary.cgi;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param HTTPS on;
fastcgi_param SERVER_PORT 443;
fastcgi_param ModRewrite 1;
fastcgi_param Basepath /;
}
}
上の設定にしたら行ける。公式の設定をコピペしても上手く行かない。
更新日:2025/09/16 投稿日:2025/09/15
Env
Ver
OS
Ubuntu 24.04.3 LTS
Docker
version 28.1.1, build 4eba377
Docker Compose
v2.35.1
Mastodonのバージョン
v4.5.0-alpha.2
Mastodonのコミットハッシュ
06803422da3794538cd9cd5c7ccd61a0694ef921
DEVELOPMENT.md#docker の手順通りにやると行ける。
docker compose -f .devcontainer/compose.yaml up -d
docker compose -f .devcontainer/compose.yaml exec app bin/setup
docker compose -f .devcontainer/compose.yaml exec app bin/dev
コンテナへのアタッチ方法
# 方法1
docker compose -f .devcontainer/compose.yaml exec app zsh
# 方法2
cd .devcontainer
docker compose exec app zsh
VSCodeがあるならDockerやRemoteほげほげ系の拡張を使い、devcontainer-appにAttach Shellしてもよい。
次のコマンドでユーザーを作る
./bin/tootctl accounts create hoge --email hoge@example.com --confirmed
ユーザーの承認を行い、必要に応じてパスワードを使いやすいものに変更する
rails console
user = Account.find_by(username: 'hoge').user
user.approve!
# PW変更ここから
user.password = 'password'
user.skip_confirmation!
# PW変更ここまで
user.save!
quit
bin/rails assets:precompile
bin/dev
.env.developmentにALTERNATE_DOMAINS=hoge.testの行を追加することで他のドメインでもアクセスできる。
この設定があるとMastodonを別環境で動かしててリモートからドメインアクセスする場合に便利。
コンテナの中でrails db:setupを叩くことで解決する。
リポジトリルートにあるdocker-compose.ymlを使うと発生するので、.devcontainer/compose.yamlを使う事で解決する。
検証用にバニラなMastodon環境が欲しくて作ってみたが昔と変わっていて地味にハマった…。
更新日:2025/10/17 投稿日:2024/03/17
adiaryをローカルで開発するための動かす環境構築のログ。
サーバー構成は前段にnginx、後段にapache2を配置し、adiaryはapache2側で動作させる
動作URLはhttp://adiary.example.test/のようなサブドメイン付きURLとする
開発を楽にするため、ホームディレクトリからシンボリックリンクを飛ばし、VSCodeで編集できるようにする
nginxやapache2、perlは既にインストールされているものとする
apache2はポート8080でListenしているものとする
Env
Ver
OS
Ubuntu 24.04.3 LTS
nginx
1.26.1
apache2
2.4.58 (Ubuntu)
adiary
3.51a
この手順では手描きした内容をteeに書き直しており、正しくファイルが生やせるか見てないので注意。
/etc/nginx/nginx.confのhttpセクションのincludeの手前にapacheのupstream情報を追記する
upstream apache {
server [::1]:8080;
}
nginx→apache2のリバプロ設定の作成
cat <<'EOF' | sudo tee /etc/nginx/conf.d/adiary.conf
server {
listen [::]:80;
client_max_body_size 100M;
server_name adiary.example.local;
access_log /var/log/nginx/adiary.example.access.log;
error_log /var/log/nginx/adiary.example.error.log;
location / {
proxy_pass http://apache/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
EOF
sudo service nginx restart
Apache2でadiaryをホスティングするバーチャルホスト設定の作成
cat <<'EOF' | sudo tee /etc/apache2/sites-enabled/001-adiary.conf
<VirtualHost *:8080>
# internal use only domain
ServerName adiary.example.local
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/sites/adiary
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/adiary-error.log
CustomLog ${APACHE_LOG_DIR}/adiary-access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
EOF
/etc/apache2/apache2.confを開き<Directory /var/www/>のセクションを次のように書き換える
Options Indexes FollowSymLinks
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
AddHandler cgi-script .cgi
Require all granted
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatchの行は標準のserve-cgi-bin.confからパクってきたのでOptions +ExecCGIだけでも動く可能性がある
AllowOverride Allはindex.htmlを残したまま表示させないために.htaccessを書くのに使う
mod_rewriteとmod_cgiを有効化し、apache2を再起動
sudo a2enmod rewrite
sudo a2enmod cgi
sudo service apache2 restart
/var/www/html/sites/adiaryを作成し、adiaryの動作環境一式を配置
開発し易いように権限を緩和
chmod 777 -R /var/www/html/sites/adiary
sudo chown -R <your-user-name>:<your-user-name> /var/www/html/sites/adiary/
/var/www/html/sites/adiary/.htaccessにadiary用の.htaccessを書く
DirectoryIndex
RewriteEngine On
# favicon
RewriteRule ^favicon\.ico /path/to/icon.png [L]
# 正規URLは通す
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*) adiary.cgi/$1 [L]
結論から書くとnginx + fcgiwrapだとtry_filesの仕様的にadiaryが行うパス解析が上手く行かずに正常に動作しないためだ。
元々ModRewrite前提のCGIとして設計されており、個人的なユースケースがCGIとしての動作であることから、Apacheで動かすことにした。
adiaryの作者がcgiラッパーを作っているため、これを使えばnginxでも動かせそうだが、adiary専用のデーモンを起動するのもなんか嫌というのも理由の一つとしてある。
何より現在このブログが動作している環境が、さくらのレンタルサーバーであり、構成的にnginx + Apacheであるため、この構成を作ることに興味があったというのもあるし、現状のローカル環境ではnginxをフロントに立たせて後ろで様々なものを動かしている都合で、フロントはnginxで捌いた方が管理がしやすいのもある。
更新日:2025/09/15 投稿日:2023/01/24
公式のドキュメントには書かれていない気がするがDockerだけあればセットアップ可能。WSL2でのセットアップが面倒なVargantは不要
本記事ではWSL2内のUbuntuの中でDockerとDocker Composeを使った構築法について記述する。Windows向けのDocker Desktopは使用しない
WSL2のUbuntuにVSCodeで接続して作業
起動してログイン、トゥート、設定と言った最低限の画面操作が可能な程度まで
Env
ver
Mastodon
v3.5.3
Docker
20.10.21, build baeda1f
Docker Compose
v2.12.2
Ubuntu
20.04.5 LTS
WSL2
1.0.3.0
DevContainer
v0.266.1
VSCode
1.73.0
git clone https://github.com/mastodon/mastodon.git
最新版などバージョン指定が必要な場合は追加でtagをチェックアウトする
VSCodeでClone先を開く
Reopen Containerする
セットアップが走るので暫く待つ
foreman startを流す
http://localhost:3000/ へアクセス
ユーザーを作ったりしたい場合、Using the admin CLI が参考になる
一例としてユーザー作成は次の書式で行ける
./bin/tootctl accounts create foo --email foo@example.com --confirmed
ActiveRecord::ConnectionNotEstablished at /
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql//.s.PGSQL.5432"?
上記のエラーが出る場合、ビルドしたDockerイメージが壊れてるので以下のコマンドで全て消して作り直すとうまく行く
docker rm -f `docker ps -a -q`
docker rmi `docker images -q`
docker system prune
複数のMastodonインスタンスのDocker環境を同居させると多分コンフリクトする
更新日:2026/07/07 投稿日:2022/02/23
ローカル環境用の開発ドメインをhttps化する時に使えるやつ
例えばローカル環境に複数のサービスがいて、それぞれをhttps://*.example.com/のようなドメインで管理したい時に使える
同じことをすればLinuxとかでも応用できると思う
Env
Ver
nginx
1.19.8
mkcert
1.4.3
Windows 10 Pro
19043.1415
mkcert の導入とワイルドカード証明書の作成
choco install mkcert
# mkcertを認証局として登録
mkcert -install
# 証明書を作成するドメインを列挙
mkcert example.test *.example.test
mv _wildcard.example.com+1.* C:/nginx/conf/.ssl/
nginxの設定に証明書を記載
server {
server_name dev.example.com;
listen 443 ssl;
ssl_certificate ssl/_wildcard.example.com+1.pem;
ssl_certificate_key ssl/_wildcard.example.com+1-key.pem;
...
}
開発 開発 開発 開発 開発 開発 開発 開発 開発 開発 開発 開発 開発