diff --git a/blueprints/rustrak-full/docker-compose.yml b/blueprints/rustrak-full/docker-compose.yml
new file mode 100644
index 00000000..16f734c7
--- /dev/null
+++ b/blueprints/rustrak-full/docker-compose.yml
@@ -0,0 +1,49 @@
+version: "3.8"
+
+services:
+ rustrak-server:
+ image: abians7/rustrak-server:v0.2.1-postgres
+ restart: unless-stopped
+ environment:
+ - HOST=0.0.0.0
+ - PORT=8080
+ - RUST_LOG=info
+ - SSL_PROXY=true
+ - DATABASE_URL=postgres://rustrak:${POSTGRES_PASSWORD}@postgres:5432/rustrak
+ - SESSION_SECRET_KEY=${SESSION_SECRET_KEY}
+ - CREATE_SUPERUSER=${CREATE_SUPERUSER}
+ ports:
+ - 8080
+ depends_on:
+ postgres:
+ condition: service_healthy
+
+ rustrak-ui:
+ image: abians7/rustrak-ui:v0.1.6
+ restart: unless-stopped
+ environment:
+ - RUSTRAK_API_URL=${RUSTRAK_API_URL}
+ ports:
+ - 3000
+ depends_on:
+ - rustrak-server
+
+ postgres:
+ image: postgres:16-alpine
+ restart: unless-stopped
+ environment:
+ - POSTGRES_USER=rustrak
+ - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
+ - POSTGRES_DB=rustrak
+ volumes:
+ - postgres_data:/var/lib/postgresql/data
+ healthcheck:
+ test: ["CMD-SHELL", "pg_isready -U rustrak -d rustrak"]
+ interval: 10s
+ timeout: 5s
+ retries: 5
+ expose:
+ - 5432
+
+volumes:
+ postgres_data:
diff --git a/blueprints/rustrak-full/rustrak.svg b/blueprints/rustrak-full/rustrak.svg
new file mode 100644
index 00000000..11d87e47
--- /dev/null
+++ b/blueprints/rustrak-full/rustrak.svg
@@ -0,0 +1,6 @@
+
diff --git a/blueprints/rustrak-full/template.toml b/blueprints/rustrak-full/template.toml
new file mode 100644
index 00000000..383f486f
--- /dev/null
+++ b/blueprints/rustrak-full/template.toml
@@ -0,0 +1,27 @@
+[variables]
+main_domain = "${domain}"
+api_domain = "${domain}"
+postgres_password = "${password:32}"
+session_secret_key = "${password:64}"
+admin_email = "${email}"
+admin_password = "${password:16}"
+create_superuser = "${admin_email}:${admin_password}"
+rustrak_api_url = "https://${api_domain}"
+
+[config]
+env = [
+ "POSTGRES_PASSWORD=${postgres_password}",
+ "SESSION_SECRET_KEY=${session_secret_key}",
+ "CREATE_SUPERUSER=${create_superuser}",
+ "RUSTRAK_API_URL=${rustrak_api_url}",
+]
+
+[[config.domains]]
+serviceName = "rustrak-ui"
+port = 3000
+host = "${main_domain}"
+
+[[config.domains]]
+serviceName = "rustrak-server"
+port = 8080
+host = "${api_domain}"
diff --git a/blueprints/rustrak/docker-compose.yml b/blueprints/rustrak/docker-compose.yml
new file mode 100644
index 00000000..e4c52b0f
--- /dev/null
+++ b/blueprints/rustrak/docker-compose.yml
@@ -0,0 +1,20 @@
+version: "3.8"
+
+services:
+ rustrak:
+ image: abians7/rustrak-server:v0.2.1
+ restart: unless-stopped
+ environment:
+ - HOST=0.0.0.0
+ - PORT=8080
+ - RUST_LOG=info
+ - SSL_PROXY=true
+ - SESSION_SECRET_KEY=${SESSION_SECRET_KEY}
+ - CREATE_SUPERUSER=${CREATE_SUPERUSER}
+ volumes:
+ - rustrak_data:/data
+ ports:
+ - 8080
+
+volumes:
+ rustrak_data:
diff --git a/blueprints/rustrak/rustrak.svg b/blueprints/rustrak/rustrak.svg
new file mode 100644
index 00000000..11d87e47
--- /dev/null
+++ b/blueprints/rustrak/rustrak.svg
@@ -0,0 +1,6 @@
+
diff --git a/blueprints/rustrak/template.toml b/blueprints/rustrak/template.toml
new file mode 100644
index 00000000..819f6f85
--- /dev/null
+++ b/blueprints/rustrak/template.toml
@@ -0,0 +1,17 @@
+[variables]
+main_domain = "${domain}"
+session_secret_key = "${password:64}"
+admin_email = "${email}"
+admin_password = "${password:16}"
+create_superuser = "${admin_email}:${admin_password}"
+
+[config]
+env = [
+ "SESSION_SECRET_KEY=${session_secret_key}",
+ "CREATE_SUPERUSER=${create_superuser}",
+]
+
+[[config.domains]]
+serviceName = "rustrak"
+port = 8080
+host = "${main_domain}"
diff --git a/meta.json b/meta.json
index 2022bca3..653a7985 100644
--- a/meta.json
+++ b/meta.json
@@ -6127,6 +6127,45 @@
"rust"
]
},
+ {
+ "id": "rustrak",
+ "name": "Rustrak",
+ "version": "0.2.1",
+ "description": "Self-hosted error tracking compatible with Sentry SDKs. Server only, written in Rust with <100MB memory footprint and SQLite storage. No external database required.",
+ "logo": "rustrak.svg",
+ "links": {
+ "github": "https://github.com/AbianS/rustrak",
+ "website": "https://abians.github.io/rustrak/",
+ "docs": "https://abians.github.io/rustrak/"
+ },
+ "tags": [
+ "monitoring",
+ "error-tracking",
+ "sentry",
+ "rust",
+ "observability"
+ ]
+ },
+ {
+ "id": "rustrak-full",
+ "name": "Rustrak (Full Stack)",
+ "version": "0.2.1",
+ "description": "Self-hosted error tracking compatible with Sentry SDKs. Includes server, web dashboard UI, and PostgreSQL. Written in Rust with <100MB memory footprint.",
+ "logo": "rustrak.svg",
+ "links": {
+ "github": "https://github.com/AbianS/rustrak",
+ "website": "https://abians.github.io/rustrak/",
+ "docs": "https://abians.github.io/rustrak/"
+ },
+ "tags": [
+ "monitoring",
+ "error-tracking",
+ "sentry",
+ "rust",
+ "observability",
+ "postgresql"
+ ]
+ },
{
"id": "rutorrent",
"name": "ruTorrent",