Skip to content

Deploying LinkAce

Introduction

LinkAce is a self-hosted bookmark manager that goes beyond simple link saving. With features like automatic link archiving, dead link monitoring, and robust organization tools, LinkAce ensures your bookmarks remain accessible and organized for years to come.

Built with Laravel and designed for personal or small team use, LinkAce provides a clean interface for managing your web collection. The application automatically archives pages through the Wayback Machine, monitors for broken links, and offers comprehensive tagging and categorization.

Key highlights of LinkAce:

  • Bookmark Management: Save, organize, and search your links
  • Automatic Archival: Integration with Wayback Machine for archiving
  • Link Monitoring: Check for dead links and receive alerts
  • Tagging System: Organize links with flexible tags
  • Lists: Group related bookmarks into collections
  • Notes: Add personal notes to any link
  • Search: Full-text search across all bookmarks
  • Import/Export: Migrate from browsers and other services
  • Browser Extension: Quick bookmarking from any page
  • API Access: Programmatic access to your bookmarks
  • Private Links: Keep certain bookmarks private
  • Multi-User: Shared or individual bookmark collections

This guide walks through deploying LinkAce on Klutch.sh using Docker.

Why Deploy LinkAce on Klutch.sh

Deploying LinkAce on Klutch.sh provides several advantages:

Simplified Deployment: Klutch.sh automatically builds LinkAce from your Dockerfile. Push to GitHub, and your bookmark manager deploys.

Persistent Storage: Attach persistent volumes for your database and archives. Your bookmarks survive restarts.

HTTPS by Default: Klutch.sh provides automatic SSL certificates for secure access.

GitHub Integration: Connect your repository for automatic redeployments.

Scalable Resources: Allocate resources based on your collection size.

Environment Variable Management: Configure settings securely.

Custom Domains: Assign a custom domain for your bookmark archive.

Always-On Availability: Your bookmark manager remains accessible 24/7.

Prerequisites

Before deploying LinkAce on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your configuration
  • Basic familiarity with Docker and containerization concepts
  • A MySQL/MariaDB or PostgreSQL database
  • Redis for caching and queue management
  • (Optional) A custom domain

Understanding LinkAce Architecture

LinkAce uses a Laravel-based architecture:

PHP Application: Laravel framework handling web requests and business logic.

Database: MySQL/MariaDB or PostgreSQL for bookmark storage.

Redis: Queue management and caching.

Scheduler: Background tasks for link checking and archival.

File Storage: For imported data and cached content.

Preparing Your Repository

Repository Structure

linkace-deploy/
├── Dockerfile
├── README.md
└── .dockerignore

Creating the Dockerfile

FROM linkace/linkace:latest
# Environment configuration
ENV APP_ENV=production
ENV APP_DEBUG=false
ENV APP_KEY=${APP_KEY}
ENV APP_URL=${APP_URL:-https://localhost}
# Database configuration
ENV DB_CONNECTION=${DB_CONNECTION:-mysql}
ENV DB_HOST=${DB_HOST:-mysql}
ENV DB_PORT=${DB_PORT:-3306}
ENV DB_DATABASE=${DB_DATABASE:-linkace}
ENV DB_USERNAME=${DB_USERNAME:-linkace}
ENV DB_PASSWORD=${DB_PASSWORD}
# Redis configuration
ENV REDIS_HOST=${REDIS_HOST:-redis}
ENV REDIS_PORT=${REDIS_PORT:-6379}
# Queue configuration
ENV QUEUE_CONNECTION=redis
# Expose port
EXPOSE 80
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \
CMD curl -f http://localhost/ || exit 1

Creating the .dockerignore File

.git
.github
*.md
LICENSE
.gitignore
*.log
.DS_Store
.env
.env.local
vendor/
node_modules/

Environment Variables Reference

VariableRequiredDefaultDescription
APP_KEYYes-Laravel application key (generate with php artisan key:generate)
APP_URLYes-Public URL for LinkAce
DB_HOSTYesmysqlDatabase hostname
DB_DATABASENolinkaceDatabase name
DB_USERNAMEYes-Database username
DB_PASSWORDYes-Database password
REDIS_HOSTYesredisRedis hostname

Deploying LinkAce on Klutch.sh

    Generate Application Key

    Create a secure Laravel application key:

    Terminal window
    php artisan key:generate --show

    Or generate a random 32-character string with base64: prefix.

    Set Up MySQL/MariaDB Database

    Deploy MySQL and create a database for LinkAce.

    Set Up Redis

    Deploy Redis for queue management and caching.

    Push Your Repository to GitHub

    Terminal window
    git init
    git add Dockerfile .dockerignore README.md
    git commit -m "Initial LinkAce deployment configuration"
    git remote add origin https://github.com/yourusername/linkace-deploy.git
    git push -u origin main

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project named “linkace” or “bookmarks”.

    Create a New App

    Within your project, create a new app. Connect your GitHub account and select your LinkAce repository.

    Configure HTTP Traffic

    In the deployment settings:

    • Select HTTP as the traffic type
    • Set the internal port to 80

    Set Environment Variables

    Add the following:

    VariableValue
    APP_KEYYour generated key
    APP_URLhttps://your-app.klutch.sh
    DB_HOSTYour MySQL hostname
    DB_DATABASElinkace
    DB_USERNAMEYour database username
    DB_PASSWORDYour database password
    REDIS_HOSTYour Redis hostname

    Attach Persistent Volumes

    Mount PathRecommended SizePurpose
    /app/storage5 GBApplication storage
    /app/backups10 GBDatabase backups

    Deploy Your Application

    Click Deploy to start the build process.

    Run Database Migrations

    After deployment, run migrations through the container:

    Terminal window
    php artisan migrate

    Create Admin Account

    Register through the web interface or use CLI:

    Terminal window
    php artisan user:create

Initial Configuration

General Settings

Configure your instance:

  1. Log in as administrator
  2. Navigate to Settings
  3. Configure site name and preferences
  4. Set up mail for notifications

Archive Settings

Enable automatic archiving:

  1. Go to Settings > Archive
  2. Enable Wayback Machine integration
  3. Configure archival frequency

Set up dead link monitoring:

  1. Navigate to Settings > Link Check
  2. Enable automatic checking
  3. Set check frequency
  4. Configure notification preferences

Import Bookmarks

Migrate existing bookmarks:

  1. Go to Import
  2. Upload HTML export from your browser
  3. Review and confirm imports
  4. Organize with tags and lists

Using LinkAce

Saving Bookmarks

Add new links:

  1. Click “Add Link” or use browser extension
  2. Enter URL or paste from clipboard
  3. Add title, description, and tags
  4. Assign to lists if desired
  5. Save

Organization

Keep bookmarks organized:

  1. Create lists for topics or projects
  2. Apply consistent tagging
  3. Use notes for context
  4. Mark important links as starred

Searching

Find saved links:

  1. Use the search bar
  2. Filter by tags, lists, or status
  3. Search notes and descriptions
  4. Sort by date or title

Production Best Practices

Security Recommendations

  • Keep APP_KEY secret and backed up
  • Use strong passwords
  • Enable HTTPS
  • Regularly update LinkAce

Performance Tips

  • Enable Redis caching
  • Run queue workers for background tasks
  • Configure appropriate memory limits

Backup Strategy

  1. Back up database regularly
  2. Back up the storage directory
  3. Export bookmarks periodically

Troubleshooting

  • Check Wayback Machine connectivity
  • Verify queue workers are running
  • Review job logs

Search Not Working

  • Rebuild search index
  • Check database connectivity
  • Verify Redis is running

Import Failures

  • Check file format
  • Verify file size limits
  • Review import logs

Additional Resources

Conclusion

Deploying LinkAce on Klutch.sh gives you a robust, self-hosted bookmark manager with automatic archiving and link monitoring. Never lose an important link again with LinkAce’s comprehensive preservation features.

With automatic builds, persistent storage, and secure HTTPS access, you can build and maintain your personal web archive with confidence.