Deploying Servas
Introduction
Servas is a self-hosted bookmark manager that helps you organize and access your saved links efficiently. With support for tags, groups, and a clean modern interface, Servas provides a simple yet powerful solution for managing your bookmarks without relying on browser sync or third-party services.
Built with Laravel and Vue.js, Servas offers a responsive web interface that works well on both desktop and mobile devices. The application focuses on ease of use while providing the organizational features power users need to manage large bookmark collections.
Key highlights of Servas:
- Tag-Based Organization: Flexible tagging system for bookmark categorization
- Groups: Organize bookmarks into hierarchical groups
- Search: Fast full-text search across all bookmarks
- Browser Extension: Quick bookmark saving from your browser
- Multi-User Support: Support for multiple user accounts
- Import/Export: OPML and browser bookmark import
- Dark Mode: Built-in dark theme support
- Mobile Friendly: Responsive design for all devices
- Later List: Save bookmarks for later reading
- 100% Open Source: Licensed under MIT
This guide walks through deploying Servas on Klutch.sh using Docker, setting up your bookmark library, and organizing your saved links.
Why Deploy Servas on Klutch.sh
Deploying Servas on Klutch.sh provides several advantages:
Simplified Deployment: Klutch.sh handles PHP and database configuration automatically.
Persistent Storage: Attach persistent volumes for your bookmark database and configuration.
HTTPS by Default: Klutch.sh provides automatic SSL certificates for secure access.
Custom Domains: Use your own domain for a personalized bookmark manager.
Always-On Access: Your bookmarks remain accessible from anywhere 24/7.
Prerequisites
Before deploying Servas on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Servas configuration
- Basic familiarity with Docker and containerization concepts
- A MySQL/MariaDB or PostgreSQL database
Preparing Your Repository
Create a GitHub repository with your Servas configuration.
Repository Structure
servas-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
Create a Dockerfile in the root of your repository:
FROM ghcr.io/beromir/servas:latest
# Environment variablesENV APP_KEY=${APP_KEY}ENV APP_URL=${APP_URL}ENV APP_ENV=productionENV APP_DEBUG=false
# Database configurationENV DB_CONNECTION=${DB_CONNECTION:-mysql}ENV DB_HOST=${DB_HOST}ENV DB_PORT=${DB_PORT:-3306}ENV DB_DATABASE=${DB_DATABASE}ENV DB_USERNAME=${DB_USERNAME}ENV DB_PASSWORD=${DB_PASSWORD}
# Mail configuration (optional)ENV MAIL_MAILER=${MAIL_MAILER:-smtp}ENV MAIL_HOST=${MAIL_HOST:-}ENV MAIL_PORT=${MAIL_PORT:-587}
# Expose the web interface portEXPOSE 80Environment Variables Reference
| Variable | Required | Default | Description |
|---|---|---|---|
APP_KEY | Yes | - | Laravel application key (generate with php artisan key:generate --show) |
APP_URL | Yes | - | Public URL of your Servas instance |
DB_CONNECTION | No | mysql | Database driver (mysql, pgsql, sqlite) |
DB_HOST | Yes | - | Database server hostname |
DB_PORT | No | 3306 | Database server port |
DB_DATABASE | Yes | - | Database name |
DB_USERNAME | Yes | - | Database username |
DB_PASSWORD | Yes | - | Database password |
MAIL_HOST | No | - | SMTP server for notifications |
Deploying Servas on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 80
Set Up Database
Servas requires a MySQL/MariaDB or PostgreSQL database. Deploy a database instance or use a managed service.
Generate Application Key
Generate a Laravel application key:
# Use a PHP environment or online generator# The key should be base64 encoded, 32 charactersOr use an online Laravel key generator.
Push Your Repository to GitHub
Initialize and push your repository:
git initgit add Dockerfile .dockerignoregit commit -m "Initial Servas deployment configuration"git remote add origin https://github.com/yourusername/servas-deploy.gitgit push -u origin mainCreate a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project with a descriptive name like “servas” or “bookmarks”.
Create a New App
Within your project, create a new app. Connect your GitHub account and select your Servas repository.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Add the following environment variables:
| Variable | Value |
|---|---|
APP_KEY | Your generated application key |
APP_URL | https://your-app-name.klutch.sh |
DB_HOST | Your database host |
DB_DATABASE | Your database name |
DB_USERNAME | Your database username |
DB_PASSWORD | Your database password |
Attach Persistent Volumes
Add the following volume:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/var/www/html/storage | 5 GB | Application storage and cache |
Deploy Your Application
Click Deploy to start the build process.
Access Servas
Once deployment completes, access your Servas instance at https://your-app-name.klutch.sh.
Initial Configuration
Creating Your Account
- Navigate to your Servas instance
- Click Register to create an account
- Enter your email, username, and password
- Verify your email if configured
Adding Bookmarks
- Log in to Servas
- Click Add Bookmark
- Enter the URL
- Add title, description, tags, and groups
- Save the bookmark
Creating Groups
- Go to Groups in the sidebar
- Click Create Group
- Enter a group name
- Optionally set a parent group for hierarchy
- Assign bookmarks to groups
Using Tags
- Add tags when creating or editing bookmarks
- Click tags in the sidebar to filter bookmarks
- Combine multiple tags for refined filtering
Browser Extension
Installing the Extension
- Go to Settings > Browser Extension
- Download the extension for your browser
- Configure the extension with your Servas URL
- Generate and enter an API token
Using the Extension
- Navigate to a page you want to bookmark
- Click the Servas extension icon
- Edit title, tags, and groups
- Click Save
Importing Bookmarks
From Browser
- Export bookmarks from your browser as HTML
- Go to Settings > Import
- Select the HTML file
- Map folders to groups
- Import
From Other Services
Servas supports importing from various formats. Check the documentation for specific import procedures.
Troubleshooting
Database Connection Error
Symptoms: Application shows database error.
Solutions:
- Verify database credentials
- Ensure database server is accessible
- Check database user permissions
- Run database migrations if needed
Bookmarks Not Saving
Symptoms: Adding bookmarks fails silently.
Solutions:
- Check browser console for errors
- Verify storage volume is mounted
- Review Laravel logs for errors
- Ensure
APP_KEYis set correctly
Additional Resources
Conclusion
Deploying Servas on Klutch.sh gives you a clean, efficient bookmark manager that keeps your saved links organized and accessible. With tags, groups, and a browser extension, you can build a personal knowledge base of useful links without relying on third-party services.