Getting Started
The fastest way to try Skriva is with Docker. You'll have a working blog in under 5 minutes.
Prerequisites
- Docker installed
Step 1: Create directories & config
bash
mkdir -p skriva/data/content/posts skriva/data/config
cd skriva
cat > data/config/site.yaml << 'EOF'
title: "My Blog"
tagline: "Thoughts, tutorials, and projects"
base_url: "http://localhost:8080"
theme: "classic"
posts_per_page: 10
author:
name: "Your Name"
bio: "Writer, developer, thinker."
footer:
sections:
- title: "Blog"
links:
- label: "Archive"
url: "/archive"
- label: "Tags"
url: "/tags"
EOFStep 2: Run the container
bash
docker run -d --name blog \
--read-only \
-v $(pwd)/data/content:/data/content \
-v $(pwd)/data/config:/data/config \
-p 8080:8080 \
ghcr.io/digvijay/skriva:latestStep 3: Open your blog
Step 4: Set an admin password
bash
# Generate a bcrypt hash
docker run --rm -it alpine sh -c \
"apk add --no-cache apache2-utils && htpasswd -nbBC 10 '' 'YourPassword123!' | cut -d: -f2"
# Create secrets.yaml with the hash
cat > data/config/secrets.yaml << 'EOF'
admin_password: "$2y$10$..." # paste your hash here
session_secret: "" # auto-generated on first run
EOF
# Restart to pick up the new password
docker restart blogNow go to http://localhost:8080/admin/ and log in!
Step 5: Write your first post
- Click "New Post" in the admin dashboard
- Type a title — the slug auto-generates
- Write in Markdown with live preview
- Set tags, description, and featured image
- Click Publish
Next Steps
- Deploy to production with Docker
- Enable 2FA in Settings → Security
- Set up a newsletter with SMTP
- Join the Fediverse — your blog is already an ActivityPub actor
- Create a custom theme