BlazorサーバーをUbuntuで構築する
簡易版です。(メモです)
blazor触ってみたときのテストです。
セキュリティとかあまり考えてないです。
dotnetをインストールする
sudo apt update && \
sudo apt install -y dotnet-sdk-8.0
versionを確認する
8.0.118と2025年8月では表示(apt installなので本当に最新かは不明)
dotnet --version
ファイルの転送
Visual Studio2022で発行したものをサーバーへ転送
ファイルの移動
sudo mv blazor.zip /var/www/blazor.zip
解凍する
ついでに削除も
sudo unzip blazor.zip
sudo rm blazor.zip
入ってないなら
sudo apt -y install unzip
権限付与
ls -laでみたら権限がめちゃくちゃだったので色々指定
sudo chmod 755 /var/www/blazor
sudo chown -R www-data:www-data /var/www/blazor
sudo find /var/www/blazor -type d -exec chmod 755 {} \;
sudo find /var/www/blazor -type f -exec chmod 644 {} \;
sudo find /var/www/blazor -type f -name "*.exe" -exec chmod 755 {} \;
起動テスト
アプリケーション名.dllを指定すると起動します(exeではありません。)
dotnet ./BlazorApp.dll
起動したらこんな感じで表示されます
info: Microsoft.Hosting.Lifetime[14]
Now listening on: http://localhost:5000
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
Content root path: /var/www/blazor
^Cinfo: Microsoft.Hosting.Lifetime[0]
Application is shutting down...
nginx 例(robtos.txt等は自分で用意してください。)
OIDCでBlazorアプリへのログインもテストしました。(問題なかったです。)
埋め込みとかも例をいれてるので調節してください。
server{
server_tokens off;
listen 80;
listen [::]:80;
server_name momijiina.com;
return 301 https://$host$request_uri;
}
server {
server_tokens off;
listen 443 ssl http2;
server_name momijiina.com;
index index.html index.htm index.nginx-debian.html;
ssl_certificate /etc/letsencrypt/live/momijiina.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/momijiina.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
client_max_body_size 100m;
client_body_buffer_size 256k;
gzip on;
gzip_comp_level 1;
gzip_proxied any;
gzip_vary on;
gzip_buffers 4 8k;
gzip_min_length 1000;
gzip_types text/plain text/xml text/css text/javascript application/xml application/xhtml+xml application/rss+xml application/atom+xml application/javascript application/x-javascript;
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header Content-Security-Policy "default-src 'self' https:; style-src 'self' 'unsafe-inline' https:; script-src 'self' 'unsafe-inline' https:" always;
#Nextcloudとかに埋め込む場合は以下↓
#add_header Content-Security-Policy "default-src 'self' https:; font-src 'self' data: https:; style-src 'self' 'unsafe-inline' https:; script-src 'self' 'unsafe-inline' https:; frame-ancestors 'self' https://cloud.momijiina.tech" always;
location /robots.txt {
alias /var/www/robots.txt;
}
location / {
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_next_upstream error timeout;
proxy_next_upstream_timeout 0;
proxy_next_upstream_tries 3;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
#Certbotによる証明書更新用
location ^~ /.well-known/acme-challenge {
root /var/www/blazor;
}
location = /.well-known/acme-challenge/ {
return 404;
}
}
自動起動とか
例です
sudo vi /etc/systemd/system/blazor-server.service
以下を編集して貼り付けてください
[Unit]
Description=MyBlazorAPP
After=network.target
[Service]
WorkingDirectory=/var/www/blazor
ExecStart=/usr/bin/dotnet /var/www/blazor/blazor.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=MyBlazorAPP
User=www-data
Group=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target
有効化と確認
systemctl enable blazor-server.service --now
sudo systemctl status blazor-server.service
サイトへアクセスする
私は問題なく表示されたので間違ってはないはず。