<?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: Alphasec</title>
    <description>The latest articles on DEV Community by Alphasec (@alphasec).</description>
    <link>https://dev.to/alphasec</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%2F3890949%2F3af0bd1c-221d-4e11-b1a4-afb2d22e198e.png</url>
      <title>DEV Community: Alphasec</title>
      <link>https://dev.to/alphasec</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alphasec"/>
    <language>en</language>
    <item>
      <title>Stop Hiring, Start Orchestrating: Running an AI Agent Company with Paperclip on Railway</title>
      <dc:creator>Alphasec</dc:creator>
      <pubDate>Sat, 16 May 2026 09:02:51 +0000</pubDate>
      <link>https://dev.to/alphasec/stop-hiring-start-orchestrating-running-an-ai-agent-company-with-paperclip-on-railway-41bn</link>
      <guid>https://dev.to/alphasec/stop-hiring-start-orchestrating-running-an-ai-agent-company-with-paperclip-on-railway-41bn</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a cross-post from alphasec.io. Original post &lt;a href="https://alphasec.io/stop-hiring-start-orchestrating-running-an-ai-agent-company-with-paperclip-on-railway" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The idea of a one-person company isn't new. What's new though is the idea of a one-person company where the person isn't doing most of the actual work. AI agents are. You set the direction, define the roles and budgets, and the agents handle the execution — writing, researching, analysing, reporting — on a schedule, without being asked twice. And tools like Paperclip are making it real enough to run today.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Paperclip?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://paperclip.ing/?ref=alphasec.io" rel="noopener noreferrer"&gt;Paperclip&lt;/a&gt; describes itself as "the human control plane for AI labor." You define a company — give it a mission, a budget, a set of agent personas — and Paperclip runs it. Agents get heartbeats on a schedule, pick up open tasks, call their assigned large language model (LLM), and post results back as issue comments. It's effectively a project management tool where every team member is an AI agent.&lt;/p&gt;

&lt;p&gt;Paperclip started as an experiment in running fully autonomous agentic operations at scale — "&lt;a href="https://github.com/paperclipai/paperclip?ref=alphasec.io" rel="noopener noreferrer"&gt;open-source&lt;/a&gt; orchestration for zero-human companies." It's evolving into something broader: a full agent orchestration platform for building companies that run on autonomous agents rather than headcount. The pivot is still in motion, but the core idea is already compelling enough to deploy and explore.&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%2F05hsrclo5vnakoqzl65h.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%2F05hsrclo5vnakoqzl65h.png" alt="Paperclip" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The unit of organisation is a &lt;strong&gt;company&lt;/strong&gt;. Inside a company you have &lt;strong&gt;agents&lt;/strong&gt; (personas with roles, adapters, and heartbeat schedules), &lt;strong&gt;projects&lt;/strong&gt;, and &lt;strong&gt;issues&lt;/strong&gt; (tasks). An agent wakes up when its heartbeat fires, looks at what's assigned to it, does the work, and goes back to sleep. The idea of a pre-built company is quite powerful, and the ecosystem is slowly growing around &lt;a href="https://companies.sh/?ref=alphasec.io" rel="noopener noreferrer"&gt;companies.sh&lt;/a&gt; — pre-built company definitions you can import into Paperclip with a single command. Imagine an external penetration testing team, a content agency, or a software development shop, fully staffed with AI agents, importable in seconds.&lt;/p&gt;

&lt;p&gt;To make it concrete, here's what a lean &lt;strong&gt;content agency&lt;/strong&gt; could look like:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;Heartbeat&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Editor in Chief&lt;/td&gt;
&lt;td&gt;Reviews briefs, assigns stories, sets editorial direction&lt;/td&gt;
&lt;td&gt;Daily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Research Analyst&lt;/td&gt;
&lt;td&gt;Monitors sources, surfaces stories, drafts research notes&lt;/td&gt;
&lt;td&gt;Every 6h&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Writer&lt;/td&gt;
&lt;td&gt;Drafts posts from research notes and briefs&lt;/td&gt;
&lt;td&gt;On demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO Analyst&lt;/td&gt;
&lt;td&gt;Reviews drafts for keyword coverage and structure&lt;/td&gt;
&lt;td&gt;On demand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Publisher&lt;/td&gt;
&lt;td&gt;Formats and schedules final output&lt;/td&gt;
&lt;td&gt;Daily&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every agent is backed by an LLM of your choice. The Editor in Chief might run on Claude for judgment-heavy decisions; the Research Analyst on Gemini Flash for speed and cost. Each agent has its own adapter, its own system prompt, its own task queue. Paperclip keeps them coordinated.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploying Paperclip on Railway
&lt;/h3&gt;

&lt;p&gt;This section covers the deployment of Paperclip on &lt;a href="https://railway.com/?referralCode=alphasec" rel="noopener noreferrer"&gt;Railway&lt;/a&gt; — a managed app hosting platform that handles infrastructure, TLS, and deployments without requiring server management. If you want a VPS approach with a fixed monthly cost, the &lt;a href="https://alphasec.io/stop-hiring-start-orchestrating-running-an-ai-agent-company-with-paperclip-on-digitalocean/" rel="noopener noreferrer"&gt;DigitalOcean guide&lt;/a&gt; covers that instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt; A Railway account, and a valid API key from at least one LLM provider (Anthropic, OpenAI, or Gemini).&lt;/p&gt;

&lt;p&gt;Paperclip runs from a custom &lt;code&gt;Dockerfile&lt;/code&gt; that wraps the official Paperclip image. An &lt;code&gt;entrypoint.sh&lt;/code&gt; script handles first-boot configuration — writing &lt;code&gt;config.json&lt;/code&gt; from environment variables, then handing off to &lt;code&gt;pnpm paperclipai run&lt;/code&gt;. This approach sidesteps a handful of non-obvious issues: the Paperclip CLI's &lt;code&gt;run&lt;/code&gt; command doesn't accept &lt;code&gt;--yes&lt;/code&gt; or &lt;code&gt;--no-onboard&lt;/code&gt; flags (those belong to onboard), the &lt;code&gt;$meta.source&lt;/code&gt; field in &lt;code&gt;config.json&lt;/code&gt; only accepts specific enum values (&lt;code&gt;onboard&lt;/code&gt;, &lt;code&gt;configure&lt;/code&gt;, &lt;code&gt;doctor&lt;/code&gt;), and Railway's health check on &lt;code&gt;/&lt;/code&gt; returns 403 in authenticated mode — requiring the check to point at &lt;code&gt;/api/health&lt;/code&gt;, which also returns 403. Removing the health check entirely and relying on process liveness instead resolves this.&lt;/p&gt;

&lt;p&gt;Paperclip supports two database configurations on Railway:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Embedded PostgreSQL (single service)&lt;/strong&gt; — leave &lt;code&gt;DATABASE_URL&lt;/code&gt; unset. Paperclip runs its built-in database. Lower cost (~$5-6/month), suitable for evaluation and small teams. To deploy, launch the &lt;a href="https://railway.com/deploy/-jFwbc?referralCode=alphasec" rel="noopener noreferrer"&gt;Paperclip (Lite) one-click starter&lt;/a&gt; template.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;External PostgreSQL (two services)&lt;/strong&gt; — add a Railway Postgres addon and wire &lt;code&gt;DATABASE_URL&lt;/code&gt; to &lt;code&gt;${{Postgres.DATABASE_URL}}&lt;/code&gt;. More robust, recommended for production. Runs ~$10-12/month. To deploy, launch the &lt;a href="https://railway.com/deploy/QRLyw2?referralCode=alphasec" rel="noopener noreferrer"&gt;Paperclip one-click starter&lt;/a&gt; template.&lt;/p&gt;

&lt;h3&gt;
  
  
  Post-Deployment Setup and Connection
&lt;/h3&gt;

&lt;p&gt;Railway routes traffic through its edge to port 3100 internally — no port configuration needed in the public URL. Once the service is running, the admin invite URL appears in the service logs. In the Railway dashboard, go to your deployed service → View logs → Deploy logs and search for invite.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;=========================================
  Paperclip deployed
=========================================
  URL:        https://paperclip.yourdomain.com
  Invite URL: https://paperclip.yourdomain.com/invite/pcp_bootstrap_...
=========================================
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the URL to create your admin account through Paperclip's native setup screen. For single-user mode, lock down further registrations by adding &lt;code&gt;PAPERCLIP_AUTH_DISABLE_SIGN_UP=true&lt;/code&gt; to service Variables and redeploying.&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%2F7g7nzruk262zicg19ynb.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%2F7g7nzruk262zicg19ynb.png" alt="Paperclip dashboard" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A couple of adapters work out of the box with environment variables — no interactive login required:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Adapter in Paperclip&lt;/th&gt;
&lt;th&gt;Environment Variable&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Anthropic&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude_local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;&lt;code&gt;opencode_local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini&lt;/td&gt;
&lt;td&gt;&lt;code&gt;opencode_local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GEMINI_API_KEY&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For Gemini, select &lt;code&gt;opencode_local&lt;/code&gt; as the adapter and choose your model (e.g. &lt;code&gt;gemini-2.5-flash&lt;/code&gt;) in the agent settings. The &lt;code&gt;gemini_local&lt;/code&gt; adapter requires interactive OAuth and won't work in a Railway container. Similarly, the &lt;code&gt;codex_local&lt;/code&gt; adapter needs WebSocket-based authentication that can't be completed headlessly — stick with &lt;code&gt;opencode_local&lt;/code&gt; for OpenAI models.&lt;/p&gt;

&lt;h3&gt;
  
  
  What's Next
&lt;/h3&gt;

&lt;p&gt;The deployment covered here is just the start — Paperclip running cleanly, agents wired up, ready to receive tasks. The real interesting (and fun) part lies in what you build on top of it. The &lt;a href="https://github.com/alphasecio/paperclip" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; also includes a &lt;code&gt;digitalocean/&lt;/code&gt; folder with a single-script VPS deployment if you prefer a fixed-cost server. I'm fascinated by the companies.sh concept, and I'm exploring a purpose-built agent company - a threat intelligence team that monitors security advisories, extracts IOCs and TTPs, and generates detection rules - as a follow up. If that sounds exciting, it'll be next.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>selfhosted</category>
      <category>docker</category>
      <category>ai</category>
    </item>
    <item>
      <title>A Developer Built an Open-Source Dropbox on a Dare. Here's How to Self-Host It.</title>
      <dc:creator>Alphasec</dc:creator>
      <pubDate>Tue, 21 Apr 2026 16:23:55 +0000</pubDate>
      <link>https://dev.to/alphasec/a-developer-built-an-open-source-dropbox-on-a-dare-heres-how-to-self-host-it-39mi</link>
      <guid>https://dev.to/alphasec/a-developer-built-an-open-source-dropbox-on-a-dare-heres-how-to-self-host-it-39mi</guid>
      <description>&lt;p&gt;A few weeks ago, &lt;a href="https://x.com/swyx" rel="noopener noreferrer"&gt;@swyx&lt;/a&gt; nerd-sniped &lt;a href="https://x.com/zachmeyer" rel="noopener noreferrer"&gt;@zachmeyer&lt;/a&gt; into building an open-source Dropbox. Zach took it seriously, and the result is &lt;a href="https://locker.dev/" rel="noopener noreferrer"&gt;Locker&lt;/a&gt;: a self-hostable file storage platform that covers most of what you'd actually use Dropbox or Google Drive for, without the subscription or lock-in.&lt;/p&gt;

&lt;p&gt;I came across the thread on X, spent some time getting Locker running on &lt;a href="https://railway.com/?referralCode=alphasec" rel="noopener noreferrer"&gt;Railway&lt;/a&gt;, and figured the deployment notes were worth writing up — especially since the setup has a few non-obvious pieces that trip you up if you're looking to self-host.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Locker Actually Is
&lt;/h2&gt;

&lt;p&gt;Locker is a Dockerized Next.js application backed by PostgreSQL. The &lt;a href="https://github.com/zmeyer44/Locker" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; is worth a look — the tech stack is modern and clean: Next.js 16 App Router, tRPC for end-to-end type safety, Drizzle ORM, BetterAuth, and Tailwind CSS, organized as a Turborepo monorepo with pnpm workspaces.&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%2Fyhn9zxtntrkhqp79fxfe.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%2Fyhn9zxtntrkhqp79fxfe.png" alt="Locker" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feature-wise it covers the things you'd actually miss from the commercial alternatives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;File and folder management&lt;/strong&gt; — upload, rename, move, delete, with a familiar explorer UI&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share links&lt;/strong&gt; — password protection, expiry dates, and download limits per link&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload links&lt;/strong&gt; — let anyone send you files without an account, useful for collecting documents from clients or collaborators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage provider agnostic&lt;/strong&gt; — switch between local disk, AWS S3, Cloudflare R2, or Vercel Blob via a single environment variable, no code changes required&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Locker as an S3 bucket&lt;/strong&gt; — generate Locker API keys and use them in other applications to write data directly to your Locker instance; it speaks S3-compatible protocol&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Per-user storage quotas&lt;/strong&gt; — set limits per user with usage tracking&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workspace teams&lt;/strong&gt; — invite team members with role-based access and organise files across workspaces&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;QMD semantic search&lt;/strong&gt; (optional plugin) — search inside the content of your files, not just filenames&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;FTS full-text search&lt;/strong&gt; (optional plugin) — full-text search across your stored documents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Email/password and Google OAuth&lt;/strong&gt; — authentication handled by BetterAuth, sessions managed server-side&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;API keys&lt;/strong&gt; — programmatic access for building integrations and automating workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Virtual bash shell&lt;/strong&gt; — navigate your file tree with &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;find&lt;/code&gt;, &lt;code&gt;cat&lt;/code&gt;, and &lt;code&gt;grep&lt;/code&gt; via a terminal panel; reads your actual stored files lazily from the configured storage provider&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last one is either delightful or unnecessary depending on your personality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Storage Provider Thing Is the Key Insight
&lt;/h2&gt;

&lt;p&gt;Most self-hosted file storage tools tie you to a specific backend. Locker doesn't. You set &lt;code&gt;BLOB_STORAGE_PROVIDER&lt;/code&gt; in your environment and point it at wherever you want files to live:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Provider&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;What you need&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local disk&lt;/td&gt;
&lt;td&gt;&lt;code&gt;local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Just a directory path&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AWS S3&lt;/td&gt;
&lt;td&gt;&lt;code&gt;s3&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Access key, secret, region, bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloudflare R2&lt;/td&gt;
&lt;td&gt;&lt;code&gt;r2&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Account ID, keys, bucket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vercel Blob&lt;/td&gt;
&lt;td&gt;&lt;code&gt;vercel&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;A read/write token&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you already have an S3 bucket, you can point Locker at it and immediately have a UI over your existing data. If you're starting fresh, local disk works out of the box. Switching later is one variable change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deploying Locker
&lt;/h2&gt;

&lt;p&gt;Locker is designed to run with Docker Compose — a &lt;code&gt;migrate&lt;/code&gt; container runs the database migrations first, then the &lt;code&gt;web&lt;/code&gt; container starts once migrations complete. That's the intended flow.&lt;/p&gt;

&lt;p&gt;Deploying to &lt;a href="https://railway.com/?referralCode=alphasec" rel="noopener noreferrer"&gt;Railway&lt;/a&gt; takes a bit more work because Railway runs a single container rather than orchestrating multiple services. I spent some time getting this right: the key issue is that migrations need to run before the app starts, and the Dockerfile in the repo builds a Next.js standalone output that doesn't include the migration tooling in the final image by default.&lt;/p&gt;

&lt;p&gt;The solution was a custom &lt;code&gt;Dockerfile.railway&lt;/code&gt; that copies the migration dependencies into the runner stage and runs them as part of the startup command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["sh", "-c", "cd /app/packages/database &amp;amp;&amp;amp; pnpm drizzle-kit migrate &amp;amp;&amp;amp; cd /app &amp;amp;&amp;amp; node apps/web/server.js"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Drizzle tracks which migrations have already been applied, so this is idempotent — subsequent deploys only apply new migrations and skip the rest.&lt;/p&gt;

&lt;p&gt;If you want to skip all of this and just get a running instance, I published a one-click &lt;a href="https://railway.com/deploy/locker-or-self-hostable-dropbox-or-googl?referralCode=alphasec" rel="noopener noreferrer"&gt;Railway template&lt;/a&gt; that handles everything automatically — Postgres, volume for file storage, migrations on startup, and all the required environment variables pre-configured:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://railway.com/deploy/locker-or-self-hostable-dropbox-or-googl?referralCode=alphasec" rel="noopener noreferrer"&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%2Fdza8fa0foe3c7h7osnqq.png" alt="Deploy on Railway" width="366" height="80"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Looks Like in Practice
&lt;/h2&gt;

&lt;p&gt;After deployment you get a clean file management interface, workspace support for teams, and the ability to generate share links for any file or folder. The virtual bash shell is accessible via a terminal panel and lets you navigate your file tree with standard Unix commands — which turns out to be genuinely useful when you want to script something against your stored files.&lt;/p&gt;

&lt;p&gt;Authentication supports email/password out of the box, and you can add Google OAuth by dropping in &lt;code&gt;GOOGLE_CLIENT_ID&lt;/code&gt; and &lt;code&gt;GOOGLE_CLIENT_SECRET&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is It Ready for Production?
&lt;/h2&gt;

&lt;p&gt;For personal use and small teams, maybe yes. For a large organisation relying on it as primary infrastructure, I'd want to see more production mileage first — the project is still relatively young. That said, the tech choices are solid, the codebase is readable, and the maintainer is active.&lt;/p&gt;

&lt;p&gt;The hosted version at &lt;a href="https://locker.dev/" rel="noopener noreferrer"&gt;locker.dev&lt;/a&gt; is available if you want to try it before committing to self-hosting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Reading
&lt;/h2&gt;

&lt;p&gt;I write about cloud, security, privacy, and self-hosted infrastructure at &lt;a href="https://alphasec.io/" rel="noopener noreferrer"&gt;alphasec.io&lt;/a&gt;. If &lt;a href="https://railway.com/?referralCode=alphasec" rel="noopener noreferrer"&gt;Railway&lt;/a&gt; templates are your thing, I maintain a collection covering everything from starter kits to AI apps and security tools.&lt;/p&gt;

</description>
      <category>selfhosted</category>
      <category>opensource</category>
      <category>webdev</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
