Add systemd services for auto-start

This commit is contained in:
Bumblebee
2026-04-26 06:09:22 +02:00
parent e6f334ce15
commit 450ec4a392
4 changed files with 274 additions and 0 deletions
+154
View File
@@ -0,0 +1,154 @@
# Auto-Start Obsidian with Systemd
Ensures Obsidian starts automatically on boot and stays running.
## Installation
### 1. Install Required Packages
```bash
sudo apt update
sudo apt install -y xvfb xvfb-run
```
### 2. Copy Service Files
```bash
sudo cp /workspace/second-brain/obsidian.service /etc/systemd/system/
sudo cp /workspace/second-brain/obsidian-mcp.service /etc/systemd/system/
```
### 3. Reload Systemd
```bash
sudo systemctl daemon-reload
```
### 4. Enable Services
```bash
# Enable Obsidian to start on boot
sudo systemctl enable obsidian.service
# Enable MCP server (optional, but recommended)
sudo systemctl enable obsidian-mcp.service
```
### 5. Start Services
```bash
# Start both services
sudo systemctl start obsidian.service
sudo systemctl start obsidian-mcp.service
# Check status
sudo systemctl status obsidian.service
sudo systemctl status obsidian-mcp.service
```
---
## Managing Services
### View Logs
```bash
# Real-time Obsidian logs
sudo journalctl -fu obsidian.service
# Real-time MCP server logs
sudo journalctl -fu obsidian-mcp.service
# Last 50 lines
sudo journalctl -n 50 -u obsidian.service
```
### Stop/Restart
```bash
sudo systemctl stop obsidian.service
sudo systemctl restart obsidian.service
sudo systemctl restart obsidian-mcp.service
```
### Check Auto-Start
```bash
# List enabled services
systemctl list-unit-files | grep obsidian
# Should show "enabled" for both
```
---
## Service Configuration
### obsidian.service
- **Type:** simple
- **User:** intense
- **Display:** Virtual Xvfb (:99)
- **Restart:** Always (if crashes, restarts in 15s)
- **Memory Limit:** 2GB
- **CPU Quota:** 80%
### obsidian-mcp.service
- **Depends on:** obsidian.service
- **Type:** simple
- **Restart:** Always
- **Memory Limit:** 512MB
- **Health Check:** Verifies API is reachable on startup
---
## Troubleshooting
### Obsidian won't start
```bash
sudo journalctl -u obsidian.service -n 50 --no-pager
```
### MCP server failing
```bash
# Make sure .env has valid API key
cat /workspace/second-brain/.env | grep OBSIDIAN_API_KEY
```
### Can't connect to Obsidian
```bash
# Check if Obsidian is running
ps aux | grep obsidian
# Check virtual display
ps aux | grep Xvfb
# Manual test
DISPLAY=:99 xdpyinfo
```
### Port already in use
```bash
# Check who's using port 27123
sudo lsof -i :27123
```
---
## Alternative: Supervisor
If systemd doesn't work, use supervisord:
```bash
sudo apt install supervisor
cat > /etc/supervisor/conf.d/obsidian.conf << 'EOF'
[program:obsidian]
command=/home/intense/.local/bin/obsidian --no-sandbox
user=intense
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/var/log/obsidian.log
environment=DISPLAY=:99
EOF
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start obsidian
```
---
Created: 2026-04-26
+46
View File
@@ -0,0 +1,46 @@
#!/bin/bash
# Install Obsidian and MCP systemd services
# Run with sudo: sudo bash install-systemd.sh
set -e
echo "📦 Installing Obsidian systemd services..."
# Check if running as root
if [ "$EUID" -ne 0 ]; then
echo "❌ This script must be run with sudo"
exit 1
fi
# Install dependencies
echo "Installing dependencies..."
apt-get update -qq
apt-get install -y -qq xvfb xvfb-run
# Copy service files
echo "Installing systemd services..."
cp obsidian.service /etc/systemd/system/obsidian.service
cp obsidian-mcp.service /etc/systemd/system/obsidian-mcp.service
# Fix permissions
chmod 644 /etc/systemd/system/obsidian.service
chmod 644 /etc/systemd/system/obsidian-mcp.service
# Reload systemd
echo "Reloading systemd..."
systemctl daemon-reload
# Enable services
echo "Enabling services..."
systemctl enable obsidian.service
systemctl enable obsidian-mcp.service
echo ""
echo "✅ Systemd services installed!"
echo ""
echo "Next steps:"
echo "1. Configure .env with your Obsidian API key"
echo "2. Start services: sudo systemctl start obsidian.service"
echo "3. View logs: sudo journalctl -fu obsidian.service"
echo ""
echo "For more info, see SYSTEMD-SETUP.md"
+36
View File
@@ -0,0 +1,36 @@
[Unit]
Description=Obsidian MCP Server
After=obsidian.service network.target
Documentation=https://github.com/cyanheads/obsidian-mcp-server
[Service]
Type=simple
User=intense
WorkingDirectory=/workspace/second-brain
# Load environment
EnvironmentFile=/workspace/second-brain/.env
# Start MCP server
ExecStart=/usr/bin/npx obsidian-mcp-server
# Health check - restart if API is unavailable
ExecStartPost=/usr/bin/sh -c 'sleep 5 && curl -s -f -H "Authorization: Bearer ${OBSIDIAN_API_KEY}" http://127.0.0.1:27123/ || exit 1'
# Restart policy
Restart=always
RestartSec=10
StartLimitInterval=300
StartLimitBurst=5
# Resource limits
MemoryLimit=512M
CPUQuota=50%
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=obsidian-mcp
[Install]
WantedBy=multi-user.target
+38
View File
@@ -0,0 +1,38 @@
[Unit]
Description=Obsidian Vault Server with MCP
After=network.target
Documentation=file:///workspace/second-brain/SETUP.md
[Service]
Type=simple
User=intense
Home=/home/intense
WorkingDirectory=/workspace/second-brain
# For headless: use Xvfb virtual display
Environment="DISPLAY=:99"
# Start Xvfb first, then Obsidian
ExecStartPre=/usr/bin/sh -c "Xvfb :99 -screen 0 1024x768x24 &"
ExecStart=/home/intense/.local/bin/obsidian --no-sandbox
# Restart policy
Restart=always
RestartSec=15
StartLimitInterval=300
StartLimitBurst=3
# Resource limits
MemoryLimit=2G
CPUQuota=80%
# Logging
StandardOutput=journal
StandardError=journal
SyslogIdentifier=obsidian
# Stop timeout
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target