<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: atakanozt</title>
    <description>The latest articles on DEV Community by atakanozt (@atakanozt).</description>
    <link>https://dev.to/atakanozt</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3702146%2F3867f18e-5c71-4fd2-a22e-36e9630d0cf5.jpg</url>
      <title>DEV Community: atakanozt</title>
      <link>https://dev.to/atakanozt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/atakanozt"/>
    <language>en</language>
    <item>
      <title>5 Awesome Ways to Deploy DocuSeal in 2026</title>
      <dc:creator>atakanozt</dc:creator>
      <pubDate>Tue, 20 Jan 2026 20:04:20 +0000</pubDate>
      <link>https://dev.to/atakanozt/5-awesome-ways-to-deploy-docuseal-in-2026-516l</link>
      <guid>https://dev.to/atakanozt/5-awesome-ways-to-deploy-docuseal-in-2026-516l</guid>
      <description>&lt;p&gt;Looking for the best way to deploy &lt;a href="https://docuseal.com" rel="noopener noreferrer"&gt;DocuSeal&lt;/a&gt;, the open-source document signing platform? Whether you need a quick setup for production, want full control over your infrastructure, or just need to test locally: there's an option for you.&lt;/p&gt;

&lt;p&gt;DocuSeal is a powerful alternative to expensive SaaS solutions like DocuSign and HelloSign. The best part? You have multiple deployment options depending on your needs, budget, and technical expertise.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through &lt;strong&gt;5 different ways to deploy DocuSeal&lt;/strong&gt;, from the simplest one-click deployment to enterprise-grade Kubernetes setups. Want the quick summary? Skip to the comparison table at the end.&lt;/p&gt;

&lt;p&gt;Let's dive into each option!&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Sliplane — The Easy Way
&lt;/h2&gt;

&lt;p&gt;If you want the &lt;strong&gt;simplest and most cost-effective&lt;/strong&gt; way to self-host DocuSeal in production, &lt;a href="https://sliplane.io?utm_source=5-ways-to-deploy-docuseal" rel="noopener noreferrer"&gt;Sliplane&lt;/a&gt; is your answer. Deploy DocuSeal in under 30 seconds with just a few clicks. No server management, no Docker knowledge required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's how fast it is:&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Sliplane is a Platform-as-a-Service (PaaS) built on top of Hetzner's infrastructure, giving you the best of both worlds: &lt;strong&gt;ease of use&lt;/strong&gt; and &lt;strong&gt;affordable pricing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign up at &lt;a href="https://sliplane.io?utm_source=5-ways-to-deploy-docuseal" rel="noopener noreferrer"&gt;sliplane.io&lt;/a&gt; (free GitHub login)&lt;/li&gt;
&lt;li&gt;Create a server (or use the free 48-hour trial server)&lt;/li&gt;
&lt;li&gt;Click "Deploy Service" → Select the DocuSeal preset&lt;/li&gt;
&lt;li&gt;Done! Your DocuSeal instance is live with automatic HTTPS&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very Easy: No technical knowledge required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€9/month flat, no per-signature fees&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Medium: Environment variables, volumes, domains&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ One-click deployment: No Docker or server knowledge needed&lt;/li&gt;
&lt;li&gt;✅ Fixed pricing: €9/month flat, no surprise bills&lt;/li&gt;
&lt;li&gt;✅ Automatic HTTPS: SSL certificates handled for you&lt;/li&gt;
&lt;li&gt;✅ Easy updates: One-click redeploy to update DocuSeal&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ No perpetual free tier: 48-hour free trial only&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers, startups, and small businesses who want DocuSeal running in production &lt;strong&gt;without the DevOps overhead&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Self-Hosted on a VPS — The DIY Way
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsliplane.io%2Fimages%2Fblog%2Fdeploy-docuseal-on-vps%2F1.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsliplane.io%2Fimages%2Fblog%2Fdeploy-docuseal-on-vps%2F1.webp" alt="Hetzner Server Creation" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For developers who love full control and want the &lt;strong&gt;absolute lowest cost&lt;/strong&gt;, self-hosting DocuSeal on a Virtual Private Server (VPS) is the way to go. Providers like &lt;a href="https://hetzner.cloud/?ref=mZziDsGU2VVp" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt;, DigitalOcean, or Linode offer affordable servers where you can run DocuSeal with Docker.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rent a VPS (e.g., Hetzner CX23 for ~€3/month)&lt;/li&gt;
&lt;li&gt;Install Docker and Docker Compose&lt;/li&gt;
&lt;li&gt;Set up a reverse proxy (Caddy or Nginx) for HTTPS&lt;/li&gt;
&lt;li&gt;Deploy DocuSeal using Docker Compose&lt;/li&gt;
&lt;li&gt;Configure DNS and SSL certificates&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We have a complete step-by-step guide with screenshots: &lt;strong&gt;&lt;a href="https://dev.to/blog/self-hosting-docuseal-on-hetzner-ubuntu-server"&gt;Self-hosting DocuSeal on a Hetzner Ubuntu Server&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Intermediate: Docker, Linux, networking knowledge&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€3-10/month (cheapest option)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High: Full SSH access, any configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Cheapest option: As low as €3-5/month on Hetzner&lt;/li&gt;
&lt;li&gt;✅ Full control: SSH access, custom configurations, any OS&lt;/li&gt;
&lt;li&gt;✅ No vendor lock-in: Move to any provider anytime&lt;/li&gt;
&lt;li&gt;✅ Learn valuable skills: Great for understanding DevOps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Manual setup required: Docker, reverse proxy, SSL, firewall&lt;/li&gt;
&lt;li&gt;❌ You handle everything: Updates, backups, security patches&lt;/li&gt;
&lt;li&gt;❌ Time investment: Initial setup takes 30-60 minutes&lt;/li&gt;
&lt;li&gt;❌ Debugging is on you: No support if something breaks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers with Linux/Docker experience who want &lt;strong&gt;maximum cost savings&lt;/strong&gt; and enjoy managing their own infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Local Development — The Testing Way
&lt;/h2&gt;

&lt;p&gt;Need to test DocuSeal or develop integrations? Running it locally on your laptop is the fastest way to get started. No server needed, no costs involved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Using Docker (one command!)&lt;/span&gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 3000:3000 &lt;span class="nt"&gt;-v&lt;/span&gt; docuseal_data:/data docuseal/docuseal:2.2.9

&lt;span class="c"&gt;# Open http://localhost:3000&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or with Docker Compose, create a &lt;code&gt;compose.yml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docuseal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal/docuseal:2.2.9&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3000:3000"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docuseal_data:/data&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docuseal_data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Easy: Just need Docker installed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Free, no hosting costs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High: Full local control&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Completely free: No hosting costs&lt;/li&gt;
&lt;li&gt;✅ Instant setup: One command to start&lt;/li&gt;
&lt;li&gt;✅ Great for testing: Experiment without consequences&lt;/li&gt;
&lt;li&gt;✅ Development friendly: Test API integrations locally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Not for production: Your laptop isn't a server&lt;/li&gt;
&lt;li&gt;❌ No public access: Others can't access your instance&lt;/li&gt;
&lt;li&gt;❌ Data loss risk: If you forget to persist volumes&lt;/li&gt;
&lt;li&gt;❌ Resource usage: Uses your laptop's CPU/RAM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Developers who want to &lt;strong&gt;test DocuSeal, develop integrations, or evaluate features&lt;/strong&gt; before committing to a hosting solution.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Kubernetes — The Enterprise Way
&lt;/h2&gt;

&lt;p&gt;For organizations with existing Kubernetes infrastructure or those needing enterprise-grade scalability and high availability, deploying DocuSeal on K8s is an option.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;But before you go down this path:&lt;/strong&gt; Read our article on &lt;a href="https://dev.to/blog/kubernetes-isnt-for-you"&gt;why Kubernetes probably isn't for you&lt;/a&gt;. For most teams, it's massive overkill. Also check out &lt;a href="https://dev.to/blog/docker-vs-kubernetes"&gt;Docker vs Kubernetes&lt;/a&gt; to understand the key differences.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apps/v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Deployment&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;matchLabels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;labels&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal&lt;/span&gt;
    &lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;containers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal&lt;/span&gt;
        &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal/docuseal:2.2.9&lt;/span&gt;
        &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;containerPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&lt;/span&gt;
        &lt;span class="na"&gt;volumeMounts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal-data&lt;/span&gt;
          &lt;span class="na"&gt;mountPath&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;/data&lt;/span&gt;
      &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal-data&lt;/span&gt;
        &lt;span class="na"&gt;persistentVolumeClaim&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;claimName&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal-pvc&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Service&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;selector&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;app&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal&lt;/span&gt;
  &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
    &lt;span class="na"&gt;targetPort&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3000&lt;/span&gt;
  &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ClusterIP&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll also need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Persistent Volume Claims for data storage&lt;/li&gt;
&lt;li&gt;Ingress controller for HTTPS&lt;/li&gt;
&lt;li&gt;Optionally: PostgreSQL deployed separately for scalability&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very Complex: K8s expertise required&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$70-200+/month (managed K8s clusters aren't cheap)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very High: Full infrastructure control&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ High availability: Multiple replicas, auto-healing&lt;/li&gt;
&lt;li&gt;✅ Enterprise-ready: Fits into existing K8s workflows&lt;/li&gt;
&lt;li&gt;✅ Infrastructure as code: GitOps-friendly deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ &lt;strong&gt;Massive overkill for most&lt;/strong&gt; — &lt;a href="https://dev.to/blog/kubernetes-isnt-for-you"&gt;You probably don't need this&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;❌ Complex setup: Requires K8s expertise&lt;/li&gt;
&lt;li&gt;❌ Expensive: Managed K8s clusters aren't cheap&lt;/li&gt;
&lt;li&gt;❌ Operational overhead: More moving parts = more things to break&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; &lt;strong&gt;Large enterprises&lt;/strong&gt; with dedicated DevOps teams who already run Kubernetes and need to integrate DocuSeal into their existing infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. DocuSeal SaaS — The Official Cloud
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsliplane.io%2Fimages%2Fblog%2Fdocuseal-pricing.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fsliplane.io%2Fimages%2Fblog%2Fdocuseal-pricing.webp" alt="DocuSeal Pricing" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Don't want to self-host at all? &lt;a href="https://docuseal.com" rel="noopener noreferrer"&gt;DocuSeal.com&lt;/a&gt; offers their own managed cloud service. They handle everything: hosting, updates, backups, and support.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Sign up at &lt;a href="https://docuseal.com" rel="noopener noreferrer"&gt;docuseal.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Choose a plan&lt;/li&gt;
&lt;li&gt;Start creating and sending documents&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very Easy: Just sign up and use&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;$13+/month per user (most expensive option)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Low: Limited to what they offer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Zero maintenance: DocuSeal team handles everything&lt;/li&gt;
&lt;li&gt;✅ Official support: Direct help from the creators&lt;/li&gt;
&lt;li&gt;✅ Always up-to-date: Automatic updates with latest features&lt;/li&gt;
&lt;li&gt;✅ Free tier available: Limited free plan for testing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Most expensive option: Paid plans start at $13/month per user&lt;/li&gt;
&lt;li&gt;❌ Per-user pricing: Costs scale with team size&lt;/li&gt;
&lt;li&gt;❌ Data on their servers: Less control over data residency&lt;/li&gt;
&lt;li&gt;❌ Usage limits: Document limits on lower tiers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; Teams who &lt;strong&gt;don't want any technical responsibility&lt;/strong&gt; and are okay paying premium prices for a fully managed experience with official support.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparison Table
&lt;/h2&gt;

&lt;p&gt;Here's a quick summary to help you choose:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Sliplane&lt;/th&gt;
&lt;th&gt;VPS (Self-Hosted)&lt;/th&gt;
&lt;th&gt;Local&lt;/th&gt;
&lt;th&gt;Kubernetes&lt;/th&gt;
&lt;th&gt;DocuSeal SaaS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Complexity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Very Easy&lt;/td&gt;
&lt;td&gt;Intermediate&lt;/td&gt;
&lt;td&gt;Easy&lt;/td&gt;
&lt;td&gt;Very Complex&lt;/td&gt;
&lt;td&gt;Very Easy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Setup Time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;30 seconds&lt;/td&gt;
&lt;td&gt;30-60 minutes&lt;/td&gt;
&lt;td&gt;1 minute&lt;/td&gt;
&lt;td&gt;Hours/Days&lt;/td&gt;
&lt;td&gt;5 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Monthly Cost&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€9+&lt;/td&gt;
&lt;td&gt;€3-10&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$70-200+&lt;/td&gt;
&lt;td&gt;$13+/user&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Customizability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Very High&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Maintenance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Managed&lt;/td&gt;
&lt;td&gt;You handle it&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;You handle it&lt;/td&gt;
&lt;td&gt;Managed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HTTPS/SSL&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;td&gt;Manual setup&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Manual setup&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Updates&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One-click&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;Automatic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;td&gt;Manual&lt;/td&gt;
&lt;td&gt;N/A&lt;/td&gt;
&lt;td&gt;Excellent&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Data Control&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Your server&lt;/td&gt;
&lt;td&gt;Full control&lt;/td&gt;
&lt;td&gt;Full control&lt;/td&gt;
&lt;td&gt;Full control&lt;/td&gt;
&lt;td&gt;Their servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best For&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Most users&lt;/td&gt;
&lt;td&gt;DIY enthusiasts&lt;/td&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Enterprises&lt;/td&gt;
&lt;td&gt;Non-technical&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Which Should You Choose?
&lt;/h2&gt;

&lt;p&gt;Let me make it simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Want the best balance of ease and cost?&lt;/strong&gt; → &lt;strong&gt;&lt;a href="https://sliplane.io?utm_source=5-ways-to-deploy-docuseal" rel="noopener noreferrer"&gt;Sliplane&lt;/a&gt;&lt;/strong&gt;: One-click deploy, €9/month, no DevOps needed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Want the absolute cheapest option?&lt;/strong&gt; → &lt;strong&gt;&lt;a href="https://dev.to/blog/self-hosting-docuseal-on-hetzner-ubuntu-server"&gt;VPS Self-Hosting&lt;/a&gt;&lt;/strong&gt;: €3-5/month, but you manage everything&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Just want to test it out?&lt;/strong&gt; → &lt;strong&gt;Local Docker&lt;/strong&gt;: Free, instant, no commitment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Running a large enterprise with K8s?&lt;/strong&gt; → &lt;strong&gt;Kubernetes&lt;/strong&gt;: Only if you &lt;a href="https://dev.to/blog/kubernetes-isnt-for-you"&gt;already have the expertise&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Don't want to touch any infrastructure?&lt;/strong&gt; → &lt;strong&gt;DocuSeal SaaS&lt;/strong&gt;: Pay premium for zero maintenance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For 90% of users, &lt;strong&gt;Sliplane offers the best value&lt;/strong&gt;: production-ready deployment in 30 seconds, predictable pricing, and zero server management. You get the cost benefits of self-hosting without the headaches.&lt;/p&gt;




&lt;p&gt;Cheers,&lt;br&gt;
Atakan&lt;/p&gt;

</description>
      <category>docker</category>
      <category>opensource</category>
      <category>devops</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Self-hosting DocuSeal on a Hetzner Ubuntu Server</title>
      <dc:creator>atakanozt</dc:creator>
      <pubDate>Fri, 16 Jan 2026 18:33:03 +0000</pubDate>
      <link>https://dev.to/atakanozt/self-hosting-docuseal-on-a-hetzner-ubuntu-server-3j8m</link>
      <guid>https://dev.to/atakanozt/self-hosting-docuseal-on-a-hetzner-ubuntu-server-3j8m</guid>
      <description>&lt;p&gt;Want to sign documents using &lt;a href="https://docuseal.com" rel="noopener noreferrer"&gt;DocuSeal&lt;/a&gt; but prefer to fully control your infrastructure? By self-hosting DocuSeal on a Linux Ubuntu server, you can cut down costs, keep your sensitive documents private, and avoid per-signature fees!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sliplane.io/blog/how-to-self-host-docuseal?utm_source=self-hosting-docuseal-ubuntu" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Looking for something simpler? Deploy in 25 seconds&lt;/a&gt;
&lt;/p&gt;



&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before we start, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;a href="https://hetzner.cloud/?ref=mZziDsGU2VVp" rel="noopener noreferrer"&gt;Hetzner&lt;/a&gt; account (or any other cloud provider)&lt;/li&gt;
&lt;li&gt;Basic SSH experience&lt;/li&gt;
&lt;li&gt;An SSH key pair on your local machine&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 0: Create a Server on Hetzner
&lt;/h2&gt;

&lt;p&gt;Log into your &lt;a href="https://console.hetzner.cloud/" rel="noopener noreferrer"&gt;Hetzner Cloud Console&lt;/a&gt; and click &lt;strong&gt;Create Resource&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhxpirtvks6dj4cahb9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhhxpirtvks6dj4cahb9o.png" alt="Hetzner Cloud Console showing Create Resource button"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose &lt;strong&gt;Shared Resources&lt;/strong&gt; &amp;gt; &lt;strong&gt;Cost-Optimized&lt;/strong&gt;. The &lt;strong&gt;CX23&lt;/strong&gt; server (2 vCPU, 4GB RAM) is perfect at just €2.99/month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feb0lwhwz1reixe1ere3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feb0lwhwz1reixe1ere3v.png" alt="Selecting CX23 server type in Hetzner"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select a location close to your users and &lt;strong&gt;Ubuntu 24.04&lt;/strong&gt; as the operating system.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4o1lo3i4mzc4646rr98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi4o1lo3i4mzc4646rr98.png" alt="Selecting Ubuntu 24.04 and server location"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add your SSH public key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# On macOS&lt;/span&gt;
pbcopy &amp;lt; ~/.ssh/id_ed25519.pub

&lt;span class="c"&gt;# On Linux&lt;/span&gt;
&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6j72ofjr10tt13bz1a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv6j72ofjr10tt13bz1a9.png" alt="Copying SSH public key from terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnlxcqn1oin37s7m6liu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnlxcqn1oin37s7m6liu.png" alt="Adding SSH key in Hetzner console"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Give your server a name and click &lt;strong&gt;Create &amp;amp; Buy now&lt;/strong&gt;. Once created, copy the IP address and connect:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw960vj2u9hu766q1wyg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftw960vj2u9hu766q1wyg.png" alt="Naming server and clicking Create and Buy now"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh root@YOUR_SERVER_IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fme0ko7ztakyiyhr7kext.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fme0ko7ztakyiyhr7kext.png" alt="Server IP address in Hetzner dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnv2tfazaj12tjubj83y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpnv2tfazaj12tjubj83y.png" alt="Successful SSH connection to Ubuntu server"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Update Your Server
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzze0mq79ofuz1zmjvnyd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzze0mq79ofuz1zmjvnyd.png" alt="Terminal output showing apt-get upgrade completed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Install and Configure UFW Firewall
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;ufw &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow 22    &lt;span class="c"&gt;# SSH&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow 80    &lt;span class="c"&gt;# HTTP&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow 443   &lt;span class="c"&gt;# HTTPS&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw &lt;span class="nb"&gt;enable&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify with &lt;code&gt;sudo ufw status verbose&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ibo6bz9nvcg2cgw6kd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1ibo6bz9nvcg2cgw6kd.png" alt="UFW firewall status showing ports 22, 80, and 443 open"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Docker can sometimes ignore UFW rules. See &lt;a href="https://stackoverflow.com/questions/30383845/what-is-the-best-practice-of-docker-ufw-under-ubuntu" rel="noopener noreferrer"&gt;this guide&lt;/a&gt; for extra settings.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Step 3: Docker Installation
&lt;/h2&gt;

&lt;p&gt;Setup dependencies and Docker's GPG key:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;ca-certificates curl gnupg

&lt;span class="nb"&gt;sudo install&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; 0755 &lt;span class="nt"&gt;-d&lt;/span&gt; /etc/apt/keyrings
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://download.docker.com/linux/ubuntu/gpg &lt;span class="se"&gt;\&lt;/span&gt;
| &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /etc/apt/keyrings/docker.gpg
&lt;span class="nb"&gt;sudo chmod &lt;/span&gt;a+r /etc/apt/keyrings/docker.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add Docker repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"deb [arch=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;dpkg &lt;span class="nt"&gt;--print-architecture&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
signed-by=/etc/apt/keyrings/docker.gpg] &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;
&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt; /etc/os-release &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$VERSION_CODENAME&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
| &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/docker.list &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; /dev/null

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Docker Engine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install &lt;/span&gt;docker-ce docker-ce-cli &lt;span class="se"&gt;\&lt;/span&gt;
containerd.io docker-buildx-plugin docker-compose-plugin &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify with &lt;code&gt;sudo docker run hello-world&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fymehu8abp5f8zuxwc2go.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fymehu8abp5f8zuxwc2go.png" alt="Docker hello-world container running successfully"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Installing Caddy for Automatic HTTPS
&lt;/h2&gt;

&lt;p&gt;Caddy handles SSL certificates automatically from Let's Encrypt.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Point your domain's &lt;strong&gt;A record&lt;/strong&gt; (IPv4) and &lt;strong&gt;AAAA record&lt;/strong&gt; (IPv6) to your server's IP before this step.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; debian-keyring debian-archive-keyring apt-transport-https curl

curl &lt;span class="nt"&gt;-1sLf&lt;/span&gt; &lt;span class="s1"&gt;'https://dl.cloudsmith.io/public/caddy/stable/gpg.key'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
| &lt;span class="nb"&gt;sudo &lt;/span&gt;gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; /usr/share/keyrings/caddy-stable-archive-keyring.gpg

curl &lt;span class="nt"&gt;-1sLf&lt;/span&gt; &lt;span class="s1"&gt;'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
| &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/caddy-stable.list

&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;caddy &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit the Caddyfile:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/caddy/Caddyfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace contents with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yourdomain.com {
    reverse_proxy localhost:3000
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeg4sx0u8pph6nf93lep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpeg4sx0u8pph6nf93lep.png" alt="Caddyfile configuration with reverse proxy"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Restart Caddy: &lt;code&gt;sudo systemctl restart caddy&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Running DocuSeal with Docker Compose
&lt;/h2&gt;

&lt;p&gt;Create a directory and compose file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; ~/docuseal
&lt;span class="nb"&gt;cd&lt;/span&gt; ~/docuseal
nano compose.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjduerdtj9n4vshl0k2m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftjduerdtj9n4vshl0k2m.png" alt="Docker Compose file for DocuSeal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docuseal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal/docuseal:2.2.9&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3000:3000"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docuseal_data:/data&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docuseal_data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 6: Access Your DocuSeal Instance
&lt;/h2&gt;

&lt;p&gt;Visit your domain in any web browser. Follow the setup steps to create your admin account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl0torkktdli8ios84sx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxl0torkktdli8ios84sx.png" alt="DocuSeal initial setup page to create admin account"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🎉 &lt;strong&gt;Congratulations!&lt;/strong&gt; You now have your own self-hosted DocuSeal instance!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3acbmqqg6mk0hvk8e9sq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3acbmqqg6mk0hvk8e9sq.png" alt="DocuSeal dashboard ready to use"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Optional Configurations
&lt;/h2&gt;

&lt;p&gt;
  Using PostgreSQL Instead of SQLite
  &lt;br&gt;
For production environments, update your &lt;code&gt;compose.yml&lt;/code&gt;:&lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docuseal&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;docuseal/docuseal:2.2.9&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;depends_on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;postgres&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3000:3000"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;docuseal_data:/data&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;DATABASE_URL=postgres://docuseal:your_secure_password@postgres:5432/docuseal&lt;/span&gt;

  &lt;span class="na"&gt;postgres&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgres:16&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;postgres_data:/var/lib/postgresql/data&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;POSTGRES_USER=docuseal&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;POSTGRES_PASSWORD=your_secure_password&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;POSTGRES_DB=docuseal&lt;/span&gt;

&lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;docuseal_data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;postgres_data&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Restart: &lt;code&gt;sudo docker compose down &amp;amp;&amp;amp; sudo docker compose up -d&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
  Configuring Email Notifications
  &lt;br&gt;
Add SMTP settings to your &lt;code&gt;compose.yml&lt;/code&gt;:&lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SMTP_ADDRESS=smtp.example.com&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SMTP_PORT=587&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SMTP_USERNAME=your-email@example.com&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SMTP_PASSWORD=your-password&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;SMTP_DOMAIN=your-domain.com&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;p&gt;
  Updating DocuSeal
  &lt;br&gt;
Since we're using a specific version tag (&lt;code&gt;2.2.9&lt;/code&gt;):

&lt;ol&gt;
&lt;li&gt;Check for new versions on &lt;a href="https://hub.docker.com/r/docuseal/docuseal/tags" rel="noopener noreferrer"&gt;DocuSeal's DockerHub&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Update the image tag in &lt;code&gt;compose.yml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Run:
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/docuseal
&lt;span class="nb"&gt;sudo &lt;/span&gt;docker compose pull
&lt;span class="nb"&gt;sudo &lt;/span&gt;docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Recommendations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Regularly apply updates and security patches&lt;/li&gt;
&lt;li&gt;Set strong passwords and control user access&lt;/li&gt;
&lt;li&gt;Monitor server logs for suspicious activity&lt;/li&gt;
&lt;li&gt;Install Fail2ban for extra security&lt;/li&gt;
&lt;li&gt;Keep Docker images updated&lt;/li&gt;
&lt;li&gt;Set up regular backups of your &lt;code&gt;/data&lt;/code&gt; volume&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Cost Comparison with SaaS Alternatives
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Monthly Cost&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Documents/Month&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Custom Branding&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DocuSign&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€45-€65+&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Paid plans only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HelloSign&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€25-€65+&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Paid plans only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PandaDoc&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€35-€65+&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Paid plans only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Hetzner (self-hosted)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~€3-5&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Comparison with Managed Hosting
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Provider&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;vCPU&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Monthly Cost&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Render.com&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;~€35-€45&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fly.io&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;~€20-€25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Railway&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;~€15-€66*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;sliplane.io&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;~€9/month flat&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;*Railway charges for actual usage.&lt;/p&gt;

&lt;p&gt;With self-hosting on Hetzner, you get similar specs for ~€3/month, but you handle all setup and maintenance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sliplane.io/blog/self-hosting-docuseal-on-hetzner-ubuntu-server?utm_source=self-hosting-docuseal-ubuntu" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;See the full tutorial with screenshots on Sliplane.io&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;If managing your own server is too much, check out how easy it is to &lt;a href="https://sliplane.io/blog/how-to-self-host-docuseal?utm_source=self-hosting-docuseal-ubuntu" rel="noopener noreferrer"&gt;deploy DocuSeal on Sliplane in just 25 seconds&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Happy self-hosting! 🚀&lt;/p&gt;

</description>
      <category>docker</category>
      <category>tutorial</category>
      <category>ubuntu</category>
      <category>docuseal</category>
    </item>
    <item>
      <title>Self-hosting DocuSeal the easy way</title>
      <dc:creator>atakanozt</dc:creator>
      <pubDate>Fri, 09 Jan 2026 16:40:20 +0000</pubDate>
      <link>https://dev.to/atakanozt/self-hosting-docuseal-the-easy-way-1o4m</link>
      <guid>https://dev.to/atakanozt/self-hosting-docuseal-the-easy-way-1o4m</guid>
      <description>&lt;p&gt;&lt;a href="https://docuseal.com" rel="noopener noreferrer"&gt;DocuSeal&lt;/a&gt; is an open-source document signing platform that enables you to create, send, and manage document signing workflows. Whether you're handling contracts, agreements, or any other documents that need signatures, DocuSeal provides a powerful alternative to expensive SaaS solutions like DocuSign or HelloSign.&lt;/p&gt;

&lt;p&gt;The best part? You can self-host DocuSeal and maintain complete control over your sensitive documents while saving significant costs. In this tutorial, we're going to set up a DocuSeal instance on Sliplane for only &lt;strong&gt;€9 per month&lt;/strong&gt; with full control and no usage limitations!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sliplane.io/app/deploy?presetId=docuseal" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;Deploy DocuSeal Now&lt;/a&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Self-Host DocuSeal?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost Savings&lt;/strong&gt;: Save 80%+ compared to SaaS document signing services&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Privacy&lt;/strong&gt;: Keep all your documents and signatures on your own infrastructure&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Usage Limits&lt;/strong&gt;: Sign unlimited documents without per-signature fees&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Control&lt;/strong&gt;: Customize branding, workflows, and integrations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compliance&lt;/strong&gt;: Meet GDPR, and other regulatory requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No Vendor Lock-in&lt;/strong&gt;: Your data stays with you, always&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Signup&lt;/strong&gt; at &lt;a href="https://sliplane.io" rel="noopener noreferrer"&gt;sliplane.io&lt;/a&gt;, the signup is free and you can use your Github Account to login.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a server&lt;/strong&gt;: If you already have a server, you can skip this step. If not, go to &lt;em&gt;&amp;gt; Servers&lt;/em&gt; and then click &lt;em&gt;&amp;gt; Create Server&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create a service&lt;/strong&gt;: go to your projects (create a new one or use the default one) and click &lt;em&gt;&amp;gt; Deploy Service&lt;/em&gt; (top right)

&lt;ul&gt;
&lt;li&gt;Select the &lt;strong&gt;DocuSeal preset&lt;/strong&gt; (You can also use the Docker image directly if you prefer)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click deploy, wait for the service to be up and then open the domain provided by sliplane. You can find that in the service settings, it should be &lt;code&gt;service-name.sliplane.app&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Follow the setup steps in the DocuSeal dashboard and you're done!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5av76aa2uccrhr0s2qj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk5av76aa2uccrhr0s2qj.png" alt="DocuSeal Deployment Success"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Your DocuSeal instance is ready for initial setup!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4kb6c5xnsqkhbpg9d93.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl4kb6c5xnsqkhbpg9d93.gif" alt="Ta daaa!"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;You did it! 🎉&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Comparison to other Hosting platforms
&lt;/h2&gt;

&lt;p&gt;Of course you can also self-host DocuSeal with other cloud providers. Here is a pricing comparison for the most common ones:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Provider&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;vCPU Cores&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;RAM&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Disk&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Estimated Monthly Cost&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Notes&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Render.com&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;~€35–€45&lt;/td&gt;
&lt;td&gt;€35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fly.io&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;~€20–€25&lt;/td&gt;
&lt;td&gt;€17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Railway&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;~€15–€30&lt;/td&gt;
&lt;td&gt;€66*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;sliplane.io&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2 GB&lt;/td&gt;
&lt;td&gt;40 GB&lt;/td&gt;
&lt;td&gt;~€9&lt;/td&gt;
&lt;td&gt;~€9/month flat&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Railway charges for actually used memory and cpu time. €66 is the max price, actual price might vary.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Comparison to SaaS Alternatives
&lt;/h2&gt;

&lt;p&gt;Self-hosting DocuSeal also saves you significant money compared to managed document signing services:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Monthly Cost&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Documents/Month&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Custom Branding&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Data Location&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;DocuSign&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€45–€65+&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Paid plans only&lt;/td&gt;
&lt;td&gt;US servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;HelloSign&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€25–€65+&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Paid plans only&lt;/td&gt;
&lt;td&gt;US servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;PandaDoc&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€35–€65+&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Paid plans only&lt;/td&gt;
&lt;td&gt;US servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Self-hosted DocuSeal&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;€9&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;Your servers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;You got questions? We got answers!&lt;/p&gt;

&lt;p&gt;
  Is self-hosted DocuSeal the same as the SaaS version?
  &lt;br&gt;
Self-hosted DocuSeal gives you access to all the core features of the open-source version:

&lt;ul&gt;
&lt;li&gt;Create and manage document templates&lt;/li&gt;
&lt;li&gt;Send documents for signing&lt;/li&gt;
&lt;li&gt;Track signing status in real-time&lt;/li&gt;
&lt;li&gt;Collect multiple signatures&lt;/li&gt;
&lt;li&gt;Custom branding and white-labeling&lt;/li&gt;
&lt;li&gt;API access for integrations&lt;/li&gt;
&lt;li&gt;Webhook support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The main difference is that you manage the infrastructure yourself, but you get complete control and unlimited usage!&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
  Can I use PostgreSQL or MySQL instead of SQLite?
  &lt;br&gt;
Yes! By default, DocuSeal uses SQLite which is perfect for small to medium deployments. For production environments or larger scale usage, you can configure DocuSeal to use PostgreSQL or MySQL by adding the &lt;code&gt;DATABASE_URL&lt;/code&gt; environment variable in your service settings:&lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DATABASE_URL=postgres://user:password@host:5432/dbname
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You can deploy a PostgreSQL or MySQL service in the same project and connect DocuSeal to it.&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
  Are there any usage based costs with sliplane?
  &lt;br&gt;
Compute is always a flat, fixed price.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  How do I update the DocuSeal version?
  &lt;br&gt;
If you used the &lt;code&gt;latest&lt;/code&gt; tag, you can simply redeploy the service (there is a button on the dashboard for that). If you used a specific version, you can update it by changing the image tag in the Sliplane settings and redeploying the service.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Can I customize the branding?
  &lt;br&gt;
Yes! DocuSeal supports full white-labeling and custom branding. You can customize logos, colors, email templates, and more through the DocuSeal admin interface.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Is my data secure?
  &lt;br&gt;
Absolutely! With self-hosting, you have complete control over your data:

&lt;ul&gt;
&lt;li&gt;All documents are stored in your own volumes&lt;/li&gt;
&lt;li&gt;No data leaves your server unless you configure external storage&lt;/li&gt;
&lt;li&gt;You can implement additional security measures as needed&lt;/li&gt;
&lt;li&gt;Full compliance with GDPR, HIPAA, and other regulations
&lt;/li&gt;
&lt;/ul&gt;




&lt;/p&gt;
&lt;p&gt;
  Can I integrate DocuSeal with my application?
  &lt;br&gt;
Yes! DocuSeal provides a comprehensive REST API that allows you to:

&lt;ul&gt;
&lt;li&gt;Create and manage templates programmatically&lt;/li&gt;
&lt;li&gt;Send documents for signing via API&lt;/li&gt;
&lt;li&gt;Track signing status&lt;/li&gt;
&lt;li&gt;Receive webhooks for signing events&lt;/li&gt;
&lt;li&gt;Download completed documents&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the &lt;a href="https://www.docuseal.com/docs" rel="noopener noreferrer"&gt;DocuSeal API documentation&lt;/a&gt; for detailed integration guides.&lt;br&gt;
&lt;/p&gt;

&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;
  What about email notifications?
  &lt;br&gt;
DocuSeal can send email notifications for document signing events. You'll need to configure SMTP settings in the environment variables. Add these to your service settings:&lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SMTP_ADDRESS=smtp.example.com
SMTP_PORT=587
SMTP_USERNAME=your-email@example.com
SMTP_PASSWORD=your-password
SMTP_DOMAIN=your-domain.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;/p&gt;

&lt;p&gt;
  Do I need a custom domain?
  &lt;br&gt;
No, you can use the default &lt;code&gt;service-name.sliplane.app&lt;/code&gt; domain that Sliplane provides. However, if you want to use a custom domain for branding purposes, you can configure it in your service settings. Sliplane automatically handles SSL certificates for custom domains.&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;&lt;a href="https://sliplane.io/blog/how-to-self-host-docuseal?utm_source=how-to-self-host-docuseal" class="crayons-btn crayons-btn--primary" rel="noopener noreferrer"&gt;See the full tutorial on Sliplane.io&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;Happy self-hosting! 🚀&lt;/p&gt;

&lt;p&gt;If you have any questions, drop them in the comments below!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>selfhosted</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>atakanozt</dc:creator>
      <pubDate>Fri, 09 Jan 2026 12:17:19 +0000</pubDate>
      <link>https://dev.to/atakanozt/-1aal</link>
      <guid>https://dev.to/atakanozt/-1aal</guid>
      <description>&lt;div class="ltag__link"&gt;
  &lt;a href="/code42cate" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F461127%2F034233c4-ba6e-473c-8a8d-783831764a10.jpeg" alt="code42cate"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="https://dev.to/code42cate/tech-stack-lessons-from-scaling-20x-in-a-year-1ekh" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Tech Stack Lessons from scaling 20x in a year&lt;/h2&gt;
      &lt;h3&gt;Jonas Scholz ・ Jan 9&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#docker&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#devops&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#startup&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>docker</category>
      <category>devops</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
