Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# =============================================================================
# OpenTracker Environment Configuration
# Trackarr Environment Configuration
# =============================================================================
# This file works for both development and production.
# Copy to .env and adjust values as needed.
Expand All @@ -24,16 +24,16 @@ NODE_ENV=development
# Database (PostgreSQL)
# -----------------------------------------------------------------------------
# Development (SSL disabled)
DATABASE_URL=postgres://tracker:tracker@localhost:5432/opentracker
DATABASE_URL=postgres://tracker:tracker@localhost:5432/trackarr

# Production (SSL enforced - sslmode=require automatically added in nuxt.config.ts)
# DATABASE_URL=postgres://tracker:STRONG_PASSWORD@pgbouncer:6432/opentracker
# DATABASE_URL=postgres://tracker:STRONG_PASSWORD@pgbouncer:6432/trackarr

# Production database settings
DB_USER=tracker
# ⚠️ PRODUCTION: Generate with: openssl rand -base64 32
DB_PASSWORD=tracker
DB_NAME=opentracker
DB_NAME=trackarr
DB_PORT=5432

# Database connection pool
Expand Down Expand Up @@ -94,7 +94,7 @@ NUXT_SESSION_SECRET=
ADMIN_API_KEY=

# IP hashing secret (REQUIRED for production - generate with: openssl rand -hex 32)
IP_HASH_SECRET=opentracker-default-secret-change-me
IP_HASH_SECRET=trackarr-default-secret-change-me

# -----------------------------------------------------------------------------
# Monitoring (Production only - Grafana)
Expand Down
68 changes: 68 additions & 0 deletions .github/workflows/deploy-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# Deploy VitePress documentation to GitHub Pages
name: Deploy Documentation

on:
push:
branches:
- main
paths:
- 'doc/**'
- '.github/workflows/deploy-docs.yml'
workflow_dispatch:

# Allow only one concurrent deployment
concurrency:
group: pages
cancel-in-progress: false

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write

jobs:
build:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./doc

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
cache-dependency-path: './doc/package-lock.json'

- name: Setup Pages
uses: actions/configure-pages@v4

- name: Install dependencies
run: npm ci

- name: Build documentation
run: npm run build

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: doc/.vitepress/dist

deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}

steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Production Dockerfile for OpenTracker
# Production Dockerfile for Trackarr
FROM node:20-alpine AS base

# Install dependencies only when needed
Expand Down
20 changes: 10 additions & 10 deletions app/components/admin/Branding.vue
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@
'font-medium': !siteNameBold,
}"
:style="{ color: siteNameColor || '' }"
v-html="siteName || 'OpenTracker'"
v-html="siteName || 'Trackarr'"
></span>
<span class="text-[10px] text-text-muted font-mono">{{
siteSubtitle || `v${useRuntimeConfig().public.appVersion}`
Expand All @@ -60,7 +60,7 @@
>
<WysiwygEditor
v-model="siteName"
placeholder="OpenTracker"
placeholder="Trackarr"
:maxLength="200"
/>

Expand Down Expand Up @@ -389,7 +389,7 @@
>
<WysiwygEditor
v-model="footerText"
:placeholder="`© ${new Date().getFullYear()} ${(siteName || 'OpenTracker').toUpperCase()}`"
:placeholder="`© ${new Date().getFullYear()} ${(siteName || 'Trackarr').toUpperCase()}`"
:maxLength="500"
/>
</SettingsGroup>
Expand All @@ -405,11 +405,11 @@
type="text"
maxlength="100"
class="w-full bg-bg-tertiary border border-border rounded px-3 py-2 text-sm text-text-primary focus:outline-none focus:border-white/20"
:placeholder="`- ${siteName || 'OpenTracker'}`"
:placeholder="`- ${siteName || 'Trackarr'}`"
/>
<p class="text-[10px] text-text-muted">
Example: "Search Torrents{{
pageTitleSuffix || ` - ${siteName || 'OpenTracker'}`
pageTitleSuffix || ` - ${siteName || 'Trackarr'}`
}}"
</p>
</div>
Expand Down Expand Up @@ -486,7 +486,7 @@
>
<WysiwygEditor
v-model="heroTitle"
placeholder="OpenTracker"
placeholder="Trackarr"
:maxLength="500"
/>
</SettingsGroup>
Expand Down Expand Up @@ -587,7 +587,7 @@
</template>

<script setup lang="ts">
const siteName = ref<string>('OpenTracker');
const siteName = ref<string>('Trackarr');
const siteLogo = ref('ph:broadcast-bold');
const siteLogoImage = ref<string | null>(null);
const siteSubtitle = ref<string>('');
Expand Down Expand Up @@ -617,7 +617,7 @@ const loadingText = ref(false);
const savedText = ref(false);

// Homepage content
const heroTitle = ref('OpenTracker');
const heroTitle = ref('Trackarr');
const heroSubtitle = ref(
'High-performance, minimalist P2P tracking engine. Search through our indexed database of verified torrents.'
);
Expand Down Expand Up @@ -683,7 +683,7 @@ onMounted(async () => {
feature3Title: string;
feature3Desc: string;
}>('/api/admin/settings');
siteName.value = settings.siteName || 'OpenTracker';
siteName.value = settings.siteName || 'Trackarr';
siteLogo.value = settings.siteLogo;
siteLogoImage.value = settings.siteLogoImage;
siteFavicon.value = settings.siteFavicon;
Expand All @@ -699,7 +699,7 @@ onMounted(async () => {
welcomeMessage.value = settings.welcomeMessage || '';
siteRules.value = settings.siteRules || '';
// Homepage content
heroTitle.value = settings.heroTitle || 'OpenTracker';
heroTitle.value = settings.heroTitle || 'Trackarr';
heroSubtitle.value = settings.heroSubtitle || heroSubtitle.value;
statusBadgeText.value =
settings.statusBadgeText || 'Tracker Online & Operational';
Expand Down
4 changes: 2 additions & 2 deletions app/components/admin/HomepageContent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
>
<WysiwygEditor
v-model="heroTitle"
placeholder="OpenTracker"
placeholder="Trackarr"
:maxLength="500"
/>
</SettingsGroup>
Expand Down Expand Up @@ -116,7 +116,7 @@
</template>

<script setup lang="ts">
const heroTitle = ref('OpenTracker');
const heroTitle = ref('Trackarr');
const heroSubtitle = ref(
'High-performance, minimalist P2P tracking engine. Search through our indexed database of verified torrents.'
);
Expand Down
2 changes: 1 addition & 1 deletion app/components/admin/System.vue
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<div>
<p class="text-sm font-medium text-text-primary">Current Version</p>
<p class="text-[10px] text-text-muted mt-0.5">
Installed version of OpenTracker
Installed version of Trackarr
</p>
</div>
<div class="flex items-center gap-2">
Expand Down
6 changes: 3 additions & 3 deletions app/layouts/default.vue
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
'font-medium': !(branding?.siteNameBold ?? true),
}"
:style="{ color: branding?.siteNameColor || '' }"
v-html="branding?.siteName || 'OpenTracker'"
v-html="branding?.siteName || 'Trackarr'"
></span>
<span class="text-[10px] text-text-muted font-mono">{{
branding?.siteSubtitle ||
Expand Down Expand Up @@ -294,7 +294,7 @@
>
<span>{{
branding?.footerText ||
`© ${new Date().getFullYear()} ${(branding?.siteName || 'OPENTRACKER').toUpperCase()}`
`© ${new Date().getFullYear()} ${(branding?.siteName || 'Trackarr').toUpperCase()}`
}}</span>
<span class="w-1 h-1 bg-border rounded-full"></span>
<span>P2P PROTOCOL</span>
Expand All @@ -308,7 +308,7 @@
><Icon name="ph:globe" class="text-xl"
/></a>
<a
href="https://github.com/florianjs/opentracker"
href="https://github.com/florianjs/trackarr"
target="_blank"
rel="noopener"
class="text-text-muted hover:text-white transition-colors"
Expand Down
2 changes: 1 addition & 1 deletion app/pages/auth/login.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</div>
<h1
class="text-2xl font-bold tracking-tighter uppercase"
v-html="branding?.authTitle || branding?.siteName || 'OpenTracker'"
v-html="branding?.authTitle || branding?.siteName || 'Trackarr'"
></h1>
<p
class="text-text-muted text-sm mt-1"
Expand Down
2 changes: 1 addition & 1 deletion app/pages/auth/register.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</div>
<h1
class="text-2xl font-bold tracking-tighter uppercase"
v-html="branding?.authTitle || branding?.siteName || 'OpenTracker'"
v-html="branding?.authTitle || branding?.siteName || 'Trackarr'"
></h1>
<p
class="text-text-muted text-sm mt-1"
Expand Down
2 changes: 1 addition & 1 deletion app/pages/search.vue
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ watch(
useHead({
title: computed(
() =>
`Search Torrents ${branding.value?.pageTitleSuffix || `- ${branding.value?.siteName || 'OpenTracker'}`}`
`Search Torrents ${branding.value?.pageTitleSuffix || `- ${branding.value?.siteName || 'Trackarr'}`}`
),
});
</script>
8 changes: 4 additions & 4 deletions doc/.vitepress/config.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { defineConfig } from 'vitepress';

export default defineConfig({
title: 'OpenTracker',
title: 'Trackarr',
description: 'A modern, high-performance private BitTorrent tracker',

base: '/opentracker/',
base: '/trackarr/',

ignoreDeadLinks: [/^http:\/\/localhost/],

Expand Down Expand Up @@ -88,13 +88,13 @@ export default defineConfig({
},

socialLinks: [
{ icon: 'github', link: 'https://github.com/florianjs/opentracker' },
{ icon: 'github', link: 'https://github.com/florianjs/trackarr' },
{ icon: 'discord', link: 'https://discord.gg/GRFu35djvz' },
],

footer: {
message: 'Released under the MIT License.',
copyright: '2025-present OpenTracker',
copyright: '2025-present Trackarr',
},

search: {
Expand Down
Loading