diff --git a/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/+page.server.ts b/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/+page.server.ts new file mode 100644 index 0000000..5cf0731 --- /dev/null +++ b/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/+page.server.ts @@ -0,0 +1,14 @@ +import { getMetadata } from '$lib/data/metadata'; +import type { PageServerLoad } from './$types'; + +export const load: PageServerLoad = async ({ url }) => { + const slug = url.pathname.split('/').filter(Boolean).pop(); + if (!slug) throw new Error('Slug could not be determined.'); + + const metadata = await getMetadata(); + const currentPost = metadata.find((post) => post.slug === slug); + + if (!currentPost) throw new Error(`Post not found: ${slug}`); + + return { currentPost, allPosts: metadata }; +}; diff --git a/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/+page.svelte b/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/+page.svelte new file mode 100644 index 0000000..9f77196 --- /dev/null +++ b/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/+page.svelte @@ -0,0 +1,427 @@ + + + + +
+ +
+

Hello, Torrust community!

+ +

+ We're happy to announce the first public release of the + Torrust Tracker Deployer: v0.1.0. +

+ +

+ This is the milestone that turns the project from an internal effort into a tool you can + use today. If you've followed our + previous deployer articles, + this release includes the workflow we used to deploy the + public Torrust Tracker demo in + production and all fixes discovered during that real-world validation. +

+ + + Release links + + + +

Release Notes Snapshot

+ +

+ This post announces the first stable release. If you want one-screen release-critical + information, this section covers support, limitations, upgrade expectations, and how to + verify a successful setup. +

+ +

Compatibility and Scope (v0.1.0)

+ +
    +
  • Production provider support: Hetzner only
  • +
  • Container execution: cloud-provider workflows are supported
  • +
  • LXD support in container mode: not supported
  • +
+ +

Upgrade and Migration

+ +

+ Since this is the first stable public release (v0.1.0), there is no migration + path from a previous stable deployer release yet. Future announcement posts will include + explicit upgrade guidance when new stable versions are published. +

+ +

Known Limitations

+ +
    +
  • Only Hetzner is supported for production deployments in this version
  • +
  • Some advanced post-provision operations still require manual steps
  • +
  • + Tracked release-process context is available in + issue #462 +
  • +
+ +

Quick Verification Checklist

+ +
    +
  • Confirm CLI help works with the command shown below
  • +
  • Validate your environment configuration before provisioning
  • +
  • Run deployment tests after run to confirm service readiness
  • +
  • + Check the demo repository if you need a reference for generated artifacts and operations +
  • +
+ + + Security note: keep secrets (API tokens, SSH keys, and environment + values) out of version control. Use local environment files and secure secret management + in CI/CD. + + +

What's in v0.1.0

+ +

+ v0.1.0 ships the first complete deployment lifecycle for Torrust Tracker environments. The + focus of this release is reliability, reproducibility, and clear operational guidance. +

+ +
    +
  • Production-tested command lifecycle from environment creation to service startup
  • +
  • Improved validation and error messages from end-to-end deployment testing
  • +
  • Deployment docs and troubleshooting guidance based on real Hetzner deployments
  • +
  • Support for running the tool via Docker, reducing local setup complexity
  • +
+ +

+ The project remains intentionally opinionated: sensible defaults, a clear sequence of + steps, and a single objective - get a tracker deployed correctly with less manual effort. +

+ +

+ Another important design choice is architecture: the deployer follows layered + Domain-Driven Design (DDD). That approach is uncommon in infrastructure tooling, but it + has helped us keep domain logic isolated from provider/tool integrations and made the + system easier to evolve and test as it grew. +

+ +

Why this release matters

+ +

+ Historically, deploying Torrust Tracker in production required many manual tasks across + server provisioning, networking, TLS, container configuration, and service checks. With + the deployer, those operations are organized into a reproducible workflow with structured + state and tests. +

+ +

+ In our + latest deployment report, + we used the deployer to bring the public demo online and fixed 11 issues discovered during + the process. Those fixes are part of the path to this v0.1.0 release. +

+ + + Current scope: v0.1.0 is a major first release, but it does not automate + every possible infrastructure scenario. Some advanced setups still require manual + post-provision steps, especially around custom networking and provider-specific details. + + +

Built Entirely With AI Agents

+ +

+ As mentioned in our + previous deployer article, the Torrust Tracker Deployer was built entirely using + AI agents. We started + this effort at the end of September 2025 and continued iterating through architecture, + implementation, testing, and documentation. +

+ +

+ To give an idea of the scope, here are the latest code statistics from the automated + code-statistics workflow: +

+ +
    +
  • 1,844 files tracked in the repository
  • +
  • 344,370 total lines (code + comments + blanks)
  • +
  • 175,769 code lines across all languages
  • +
  • 107,124 comment lines for documentation and explanations
  • +
  • 61,477 blank lines for structure and readability
  • +
  • 804 Rust files with 85,323 Rust code lines
  • +
  • + 438 Markdown files with 84,184 Markdown lines +
  • +
+ +

Quick start overview

+ +

+ The deployer workflow is sequential. At a high level, you'll create a config template, + validate it, create the environment, provision infrastructure, configure and release + artifacts, run services, and then test the deployment. +

+ +

If you want to see the CLI help, you can run:

+ + + +

+ For a complete tutorial with practical examples and provider-specific notes, read: + Deploying the Torrust Tracker Demo with the Torrust Tracker Deployer. +

+ +

+ You can also inspect the final generated configuration and deployment artifacts in the + Torrust Tracker Demo repository. It is useful for learning the extra maintenance and operational tasks that happen after + the initial deployment. +

+ +

What's next

+ +

+ We'll continue improving automation coverage, provider integrations, and deployment + ergonomics. As adoption grows, we'll prioritize issues reported by users running real + environments. +

+ +
    +
  • Better support for production patterns that still need manual intervention
  • +
  • Expanded provider and deployment scenario documentation
  • +
  • Iterative UX improvements in commands, validation, and recovery guidance
  • +
+ +

How you can help

+ +

+ If you run a tracker, test infrastructure workflows, or simply want to help improve + deployment tooling in the BitTorrent ecosystem, your feedback is extremely valuable. +

+ +
    +
  • + Try v0.1.0 in your own environment and share your experience by opening an + issue +
  • +
  • + Report bugs or unclear documentation in + issues +
  • +
  • Contribute improvements in code, docs, or tests via pull requests
  • +
+ +

+ Thanks to everyone who tested early versions and helped shape this first release. Onward + to the next iteration. +

+
+
+
+ + +
+ + diff --git a/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/metadata.ts b/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/metadata.ts new file mode 100644 index 0000000..1fadf42 --- /dev/null +++ b/src/routes/blog/released-torrust-tracker-deployer-v0-1-0/metadata.ts @@ -0,0 +1,12 @@ +export const metadata = { + title: 'Released Torrust Tracker Deployer v0.1.0', + slug: 'released-torrust-tracker-deployer-v0-1-0', + contributor: 'Jose Celano', + contributorSlug: 'jose-celano', + date: '2026-04-15T00:00:00.000Z', + coverImage: + '/images/posts/released-torrust-tracker-deployer-v0-1-0/torrust-tracker-deployer-v0-1-0-release-announcement-cover.webp', + excerpt: + "We're happy to announce the first stable release of the Torrust Tracker Deployer: v0.1.0. This milestone makes automated Torrust Tracker deployment publicly available, with production-tested workflows and comprehensive documentation.", + tags: ['Announcement', 'Release', 'Deployment'] +}; diff --git a/static/blogMetadata.json b/static/blogMetadata.json index abc08b8..69e7463 100644 --- a/static/blogMetadata.json +++ b/static/blogMetadata.json @@ -12,6 +12,50 @@ "Benchmarking" ] }, + { + "title": "Building with AI Agents, Building for AI Agents", + "slug": "building-with-ai-agents-building-for-ai-agents", + "contributor": "Jose Celano", + "contributorSlug": "jose-celano", + "date": "2026-02-27T12:00:00.000Z", + "coverImage": "/images/posts/building-with-ai-agents-building-for-ai-agents/ai-agent-developer-tools-workflow.webp", + "excerpt": "I spent months building the Torrust Tracker Deployer without writing a single line of code directly — every line came from a GitHub Copilot agent. But this post is about something bigger: the shift in thinking that came from that experience and what it taught us about designing tools that AI agents can actually use well.", + "tags": [ + "AI", + "Rust", + "Torrust", + "DevOps", + "Tutorial" + ] + }, + { + "title": "Deploying Torrust To Production", + "slug": "deploying-torrust-to-production", + "contributor": "Jose Celano", + "contributorSlug": "jose-celano", + "date": "2023-12-20T00:00:00.000Z", + "coverImage": "/images/posts/deploying-torrust-to-production/deploy-torrust-to-a-digital-ocean-droplet.png", + "excerpt": "Dive into our step-by-step tutorial on deploying a BitTorrent Index and Tracker, written in Rust, on a Digital Ocean droplet. From initial server setup to advanced configurations, this guide is designed for both non-developers and tech-savvy users, ensuring a seamless, production-ready deployment.", + "tags": [ + "Tutorial", + "Deployment", + "Production" + ] + }, + { + "title": "Contributor Path", + "slug": "contributor-path", + "contributor": "Jose Celano", + "contributorSlug": "jose-celano", + "date": "2024-10-29T09:20:51.608Z", + "coverImage": "/images/posts/contributor-path/rust-crab-going-safe-into-water.webp", + "excerpt": "Ready to contribute to Torrust? Here's your guide to get started and make meaningful contributions, from small fixes to full-fledged features.", + "tags": [ + "Community", + "Onboarding", + "Contributors" + ] + }, { "title": "Bencode to JSON Converter in Rust", "slug": "bencode-to-json-converter-in-rust", @@ -41,20 +85,6 @@ "BitTorrent" ] }, - { - "title": "Deploying Torrust To Production", - "slug": "deploying-torrust-to-production", - "contributor": "Jose Celano", - "contributorSlug": "jose-celano", - "date": "2023-12-20T00:00:00.000Z", - "coverImage": "/images/posts/deploying-torrust-to-production/deploy-torrust-to-a-digital-ocean-droplet.png", - "excerpt": "Dive into our step-by-step tutorial on deploying a BitTorrent Index and Tracker, written in Rust, on a Digital Ocean droplet. From initial server setup to advanced configurations, this guide is designed for both non-developers and tech-savvy users, ensuring a seamless, production-ready deployment.", - "tags": [ - "Tutorial", - "Deployment", - "Production" - ] - }, { "title": "Deploying the Torrust Tracker Demo with the Torrust Tracker Deployer", "slug": "deploying-torrust-tracker-with-the-deployer", @@ -69,36 +99,6 @@ "Automation" ] }, - { - "title": "Contributor Path", - "slug": "contributor-path", - "contributor": "Jose Celano", - "contributorSlug": "jose-celano", - "date": "2024-10-29T09:20:51.608Z", - "coverImage": "/images/posts/contributor-path/rust-crab-going-safe-into-water.webp", - "excerpt": "Ready to contribute to Torrust? Here's your guide to get started and make meaningful contributions, from small fixes to full-fledged features.", - "tags": [ - "Community", - "Onboarding", - "Contributors" - ] - }, - { - "title": "Building with AI Agents, Building for AI Agents", - "slug": "building-with-ai-agents-building-for-ai-agents", - "contributor": "Jose Celano", - "contributorSlug": "jose-celano", - "date": "2026-02-27T12:00:00.000Z", - "coverImage": "/images/posts/building-with-ai-agents-building-for-ai-agents/ai-agent-developer-tools-workflow.webp", - "excerpt": "I spent months building the Torrust Tracker Deployer without writing a single line of code directly — every line came from a GitHub Copilot agent. But this post is about something bigger: the shift in thinking that came from that experience and what it taught us about designing tools that AI agents can actually use well.", - "tags": [ - "AI", - "Rust", - "Torrust", - "DevOps", - "Tutorial" - ] - }, { "title": "Hash2Torrent - Retrieve Torrent Files Effortlessly!", "slug": "hash2torrent-retrieve-torrent-files-effortlessly", @@ -128,6 +128,18 @@ "Announcement" ] }, + { + "title": "How To Contribute To This Site", + "slug": "how-to-contribute-to-this-site", + "contributor": "", + "contributorSlug": "", + "date": "2023-04-22T21:55:15.361Z", + "coverImage": "/images/posts/sample-post.jpg", + "excerpt": "How to manage existing blog posts and create new ones on this site.", + "tags": [ + "Documentation" + ] + }, { "title": "How To Setup The Dev Env", "slug": "how-to-setup-the-development-environment", @@ -142,32 +154,6 @@ "BitTorrent" ] }, - { - "title": "How To Run A Local Demo", - "slug": "how-to-run-a-local-demo", - "contributor": "Jose Celano", - "contributorSlug": "jose-celano", - "date": "2023-07-11T15:28:28.769Z", - "coverImage": "/images/posts/mandelbrot-set-periods-torrent-screenshot.png", - "excerpt": "You can easily run the Torrust Index demo on your computer easily with Git and Docker.", - "tags": [ - "Demo", - "Tutorial", - "Guide" - ] - }, - { - "title": "How To Contribute To This Site", - "slug": "how-to-contribute-to-this-site", - "contributor": "", - "contributorSlug": "", - "date": "2023-04-22T21:55:15.361Z", - "coverImage": "/images/posts/sample-post.jpg", - "excerpt": "How to manage existing blog posts and create new ones on this site.", - "tags": [ - "Documentation" - ] - }, { "title": "Introducing the New Sample Torrent Migration Tool", "slug": "introducing-the-new-sample-torrent-migration-tool", @@ -195,6 +181,20 @@ "Announcement" ] }, + { + "title": "How To Run A Local Demo", + "slug": "how-to-run-a-local-demo", + "contributor": "Jose Celano", + "contributorSlug": "jose-celano", + "date": "2023-07-11T15:28:28.769Z", + "coverImage": "/images/posts/mandelbrot-set-periods-torrent-screenshot.png", + "excerpt": "You can easily run the Torrust Index demo on your computer easily with Git and Docker.", + "tags": [ + "Demo", + "Tutorial", + "Guide" + ] + }, { "title": "Announcing the Beta v3.0.0 Live Demo", "slug": "live-demo-beta-v3", @@ -243,18 +243,32 @@ ] }, { - "title": "Released version v3.0.0", - "slug": "released-v3-0-0-beta", + "title": "Released version v3.0.0-beta", + "slug": "released-v3-0-0", "contributor": "Jose Celano", "contributorSlug": "jose-celano", - "date": "2024-10-03T11:05:14.597Z", - "coverImage": "/images/posts/released-v3-0-0/team.png", - "excerpt": "We’re thrilled to announce the official release of version 3.0.0 of the Torrust software.", + "date": "2024-09-03T14:30:38.554Z", + "coverImage": "/images/posts/released-v3-0-0-beta/team.png", + "excerpt": "We're excited to announce the release of v3.0.0-beta, marking a significant step towards our upcoming major release, v3.0.0. This release solidifies the features and prepares us for the beta phase.", "tags": [ "Announcement", "Release" ] }, + { + "title": "Released Torrust Tracker Deployer v0.1.0", + "slug": "released-torrust-tracker-deployer-v0-1-0", + "contributor": "Jose Celano", + "contributorSlug": "jose-celano", + "date": "2026-04-15T00:00:00.000Z", + "coverImage": "/images/posts/released-torrust-tracker-deployer-v0-1-0/torrust-tracker-deployer-v0-1-0-release-announcement-cover.webp", + "excerpt": "We're happy to announce the first stable release of the Torrust Tracker Deployer: v0.1.0. This milestone makes automated Torrust Tracker deployment publicly available, with production-tested workflows and comprehensive documentation.", + "tags": [ + "Announcement", + "Release", + "Deployment" + ] + }, { "title": "Review and Setup Guide for UNIT3D", "slug": "review-and-setup-guide-for-unit3d", @@ -271,34 +285,18 @@ ] }, { - "title": "Released version v3.0.0-beta", - "slug": "released-v3-0-0", + "title": "Released version v3.0.0", + "slug": "released-v3-0-0-beta", "contributor": "Jose Celano", "contributorSlug": "jose-celano", - "date": "2024-09-03T14:30:38.554Z", - "coverImage": "/images/posts/released-v3-0-0-beta/team.png", - "excerpt": "We're excited to announce the release of v3.0.0-beta, marking a significant step towards our upcoming major release, v3.0.0. This release solidifies the features and prepares us for the beta phase.", + "date": "2024-10-03T11:05:14.597Z", + "coverImage": "/images/posts/released-v3-0-0/team.png", + "excerpt": "We’re thrilled to announce the official release of version 3.0.0 of the Torrust software.", "tags": [ "Announcement", "Release" ] }, - { - "title": "How to Run a UDP Tracker Behind a Floating IP on Ubuntu", - "slug": "setup-udp-tracker-behind-floating-ip", - "contributor": "Jose Celano", - "contributorSlug": "jose-celano", - "date": "2026-04-14T00:00:00.000Z", - "coverImage": "/images/posts/setup-udp-tracker-behind-floating-ip/udp-tracker-floating-ip-ipv6-docker-configuration.webp", - "excerpt": "A practical guide to running a UDP BitTorrent tracker behind floating IPs (also known as static, reserved, or elastic IPs) on Ubuntu, including policy routing, Docker IPv6 networking, and SNAT for correct reply paths.", - "tags": [ - "BitTorrent", - "Tracker", - "Networking", - "IPv6", - "Deployment" - ] - }, { "title": "Setting Up Torrust with Claude Code", "slug": "setting-up-torrust-with-claude-code", @@ -314,16 +312,35 @@ ] }, { - "title": "Torrust - Enhancing the BitTorrent Ecosystem", - "slug": "torrust-enhancing-the-bittorrent-ecosystem", + "title": "Submitting Trackers to newTrackon", + "slug": "submitting-trackers-to-newtrackon", "contributor": "Jose Celano", "contributorSlug": "jose-celano", - "date": "2024-05-31T09:33:14.163Z", - "coverImage": "/images/posts/deploying-torrust-to-production/deploy-torrust-to-a-digital-ocean-droplet.png", - "excerpt": "Torrust, an open-source organization, is making significant contributions to the BitTorrent ecosystem by developing robust tools, improving documentation, and fostering community collaboration.", + "date": "2026-04-01T12:00:00.000Z", + "coverImage": "/images/posts/submitting-trackers-to-newtrackon/submitting-bittorrent-tracker-to-newtrackon.webp", + "excerpt": "A practical guide to submitting BitTorrent trackers to newTrackon, the popular third-party uptime monitoring service. Learn the prerequisites, how to work around the one-tracker-per-IP constraint using floating IPs, and how to configure DNS correctly with BEP34.", "tags": [ - "Introduction", - "Torrust" + "BitTorrent", + "Tracker", + "DevOps", + "DNS", + "Demo" + ] + }, + { + "title": "How to Run a UDP Tracker Behind a Floating IP on Ubuntu", + "slug": "setup-udp-tracker-behind-floating-ip", + "contributor": "Jose Celano", + "contributorSlug": "jose-celano", + "date": "2026-04-14T00:00:00.000Z", + "coverImage": "/images/posts/setup-udp-tracker-behind-floating-ip/udp-tracker-floating-ip-ipv6-docker-configuration.webp", + "excerpt": "A practical guide to running a UDP BitTorrent tracker behind floating IPs (also known as static, reserved, or elastic IPs) on Ubuntu, including policy routing, Docker IPv6 networking, and SNAT for correct reply paths.", + "tags": [ + "BitTorrent", + "Tracker", + "Networking", + "IPv6", + "Deployment" ] }, { @@ -356,19 +373,16 @@ ] }, { - "title": "Submitting Trackers to newTrackon", - "slug": "submitting-trackers-to-newtrackon", + "title": "Torrust - Enhancing the BitTorrent Ecosystem", + "slug": "torrust-enhancing-the-bittorrent-ecosystem", "contributor": "Jose Celano", "contributorSlug": "jose-celano", - "date": "2026-04-01T12:00:00.000Z", - "coverImage": "/images/posts/submitting-trackers-to-newtrackon/submitting-bittorrent-tracker-to-newtrackon.webp", - "excerpt": "A practical guide to submitting BitTorrent trackers to newTrackon, the popular third-party uptime monitoring service. Learn the prerequisites, how to work around the one-tracker-per-IP constraint using floating IPs, and how to configure DNS correctly with BEP34.", + "date": "2024-05-31T09:33:14.163Z", + "coverImage": "/images/posts/deploying-torrust-to-production/deploy-torrust-to-a-digital-ocean-droplet.png", + "excerpt": "Torrust, an open-source organization, is making significant contributions to the BitTorrent ecosystem by developing robust tools, improving documentation, and fostering community collaboration.", "tags": [ - "BitTorrent", - "Tracker", - "DevOps", - "DNS", - "Demo" + "Introduction", + "Torrust" ] }, { diff --git a/static/images/posts/released-torrust-tracker-deployer-v0-1-0/torrust-tracker-deployer-v0-1-0-release-announcement-cover.webp b/static/images/posts/released-torrust-tracker-deployer-v0-1-0/torrust-tracker-deployer-v0-1-0-release-announcement-cover.webp new file mode 100644 index 0000000..c035811 Binary files /dev/null and b/static/images/posts/released-torrust-tracker-deployer-v0-1-0/torrust-tracker-deployer-v0-1-0-release-announcement-cover.webp differ