mirror of
https://github.com/FuzzyGrim/Yamtrack.git
synced 2026-06-27 22:35:55 +00:00
1 line
36 KiB
JSON
1 line
36 KiB
JSON
{"config":{"separator":"[\\s\\-_,:!=\\[\\]()\\\\\"`/]+|\\.(?!\\d)"},"items":[{"location":"","level":1,"title":"Yamtrack","text":"<p>Yamtrack is a self hosted media tracker for movies, tv shows, anime, manga, video games, books, comics, and board games.</p>","path":["Yamtrack"],"tags":[]},{"location":"#demo","level":2,"title":"🚀 Demo","text":"<p>You can try the app at yamtrack.fuzzygrim.com using the username <code>demo</code> and password <code>demo</code>.</p>","path":["Yamtrack"],"tags":[]},{"location":"#features","level":2,"title":"✨ Features","text":"<ul> <li>🎬 Track movies, tv shows, anime, manga, games, books, comics, and board games.</li> <li>📺 Track each season of a tv show individually and episodes watched.</li> <li>⭐ Save score, status, progress, repeats (rewatches, rereads...), start and end dates, or write a note.</li> <li>📈 Keep a tracking history with each action with a media, such as when you added it, when you started it, when you started watching it again, etc.</li> <li>✏️ Create custom media entries, for niche media that cannot be found by the supported APIs.</li> <li>📂 Create personal lists to organize your media for any purpose, add other members to collaborate on your lists.</li> <li>📅 Keep up with your upcoming media with a calendar, which can be subscribed to in external applications using a iCalendar (.ics) URL.</li> <li>🔔 Receive notifications of upcoming releases via Apprise (supports Discord, Telegram, ntfy, Slack, email, and many more).</li> <li>🐳 Easy deployment with Docker via docker-compose with SQLite or PostgreSQL.</li> <li>👥 Multi-users functionality allowing individual accounts with personalized tracking.</li> <li>🔑 Flexible authentication options including OIDC and 100+ social providers (Google, GitHub, Discord, etc.) via django-allauth.</li> <li>🦀 Integration with Jellyfin, Plex and Emby to automatically track new media watched.</li> <li>📥 Import from Trakt, Simkl, MyAnimeList, AniList and Kitsu with support for periodic automatic imports.</li> <li>📊 Export all your tracked media to a CSV file and import it back.</li> </ul>","path":["Yamtrack"],"tags":[]},{"location":"#screenshots","level":2,"title":"📱 Screenshots","text":"Homepage Calendar Media List Grid Media List Table Media Details Tracking Season Details Tracking Episodes Lists Statistics Create Manual Entries Import Data","path":["Yamtrack"],"tags":[]},{"location":"#installing-with-docker","level":2,"title":"🐳 Installing with Docker","text":"<p>Download the default <code>docker-compose.yml</code> file from the repository, update the environment values, and start Yamtrack:</p> <pre><code>docker compose up -d\n</code></pre> <p>The default Compose file uses SQLite, which is enough for most personal installs. For full SQLite, PostgreSQL, and reverse proxy setup instructions, see the Setup documentation.</p>","path":["Yamtrack"],"tags":[]},{"location":"#development","level":2,"title":"💻 Development","text":"<p>Development instructions are available in the Development documentation.</p>","path":["Yamtrack"],"tags":[]},{"location":"#support-the-project","level":2,"title":"💪 Support the Project","text":"<p>There are many ways you can support Yamtrack's development:</p>","path":["Yamtrack"],"tags":[]},{"location":"#star-the-project","level":3,"title":"⭐ Star the Project","text":"<p>The simplest way to show your support is to star the repository on GitHub. It helps increase visibility and shows appreciation for the work.</p>","path":["Yamtrack"],"tags":[]},{"location":"#bug-reports","level":3,"title":"🐛 Bug Reports","text":"<p>Found a bug? Open an issue on GitHub with detailed steps to reproduce it. Quality bug reports are incredibly valuable for improving stability.</p>","path":["Yamtrack"],"tags":[]},{"location":"#feature-suggestions","level":3,"title":"💡 Feature Suggestions","text":"<p>Have ideas for new features? Share them through GitHub issues. Your feedback helps shape the future of Yamtrack.</p>","path":["Yamtrack"],"tags":[]},{"location":"#contributing","level":3,"title":"🧪 Contributing","text":"<p>Pull requests are welcome! Whether it's fixing typos, improving documentation, or adding new features, your contributions help make Yamtrack better for everyone.</p>","path":["Yamtrack"],"tags":[]},{"location":"#donate","level":3,"title":"☕ Donate","text":"<p>If you'd like to support the project financially:</p> <p></p>","path":["Yamtrack"],"tags":[]},{"location":"administration/","level":1,"title":"Administration","text":"<p>To access the admin page of the application, follow these steps:</p>","path":["Administration"],"tags":[]},{"location":"administration/#enabling-the-admin-interface","level":2,"title":"Enabling the Admin Interface","text":"<ol> <li> <p>Set Environment Variable: You need to enable the admin interface by setting the environment variable <code>ADMIN_ENABLED</code> to <code>True</code>. This can be done in your environment configuration file (e.g., <code>.env</code> file) or directly in your <code>docker-compose.yml</code>.</p> <pre><code>ADMIN_ENABLED=True\n</code></pre> <p>For related settings, see env-variables.</p> </li> <li> <p>Access the Admin Page: Once enabled, you can access the admin interface at the following URL:</p> <pre><code>https://domain.com/admin/\n</code></pre> </li> </ol>","path":["Administration"],"tags":[]},{"location":"administration/#logging-in","level":2,"title":"Logging In","text":"<p>To log in to the admin interface, you will need an admin account. You can either change an existing user to have admin privileges or create a new user with those roles.</p>","path":["Administration"],"tags":[]},{"location":"administration/#changing-an-existing-user-to-admin","level":3,"title":"Changing an Existing User to Admin","text":"<ol> <li> <p>Open Django Shell: If you are using Docker, you can access the Django shell by running the following command in your terminal:</p> <pre><code>docker exec -it yamtrack python manage.py shell\n</code></pre> </li> <li> <p>Set Admin Privileges: Find the user you want to promote to admin. Replace <code>username</code> with the actual username of the user.</p> <pre><code>User.objects.filter(username='username').update(is_staff=True, is_superuser=True)\n</code></pre> </li> </ol>","path":["Administration"],"tags":[]},{"location":"administration/#creating-a-new-admin-user","level":3,"title":"Creating a New Admin User","text":"<ol> <li> <p>Open Django Shell: As mentioned above, access the Django shell using Docker:</p> <pre><code>docker exec -it yamtrack python manage.py shell\n</code></pre> </li> <li> <p>Create a New User: Use the following code to create a new user. Replace <code>new_username</code>, <code>new_password</code>, and <code>new_email</code> with the desired values.</p> <pre><code>User.objects.create_user(username='new_username', password='new_password', is_staff=True, is_superuser=True)\n</code></pre> </li> <li> <p>Log In: After creating the new user, you can log in to the admin interface using the new credentials.</p> </li> </ol>","path":["Administration"],"tags":[]},{"location":"administration/#admin-interface-overview","level":3,"title":"Admin Interface Overview","text":"<p>After logging in, you will see various tables representing the different models in your database:</p> <p>Here, you can view and edit data. For example, to edit an item image:</p> <p></p> <ol> <li>Click on the Items entry.</li> <li>You will see a list of items. Click on the specific item you want to change.</li> <li>In the item detail view, you can update the image URL in the corresponding field.</li> </ol>","path":["Administration"],"tags":[]},{"location":"development/","level":1,"title":"Development","text":"<p>This page covers working on Yamtrack from source.</p>","path":["Development"],"tags":[]},{"location":"development/#prerequisites","level":2,"title":"Prerequisites","text":"<ul> <li>uv</li> <li>tailwindcss CLI (install with <code>npm install -g tailwindcss @tailwindcss/cli</code>)</li> <li>Docker</li> <li>Redis</li> </ul>","path":["Development"],"tags":[]},{"location":"development/#general-setup","level":2,"title":"General setup","text":"","path":["Development"],"tags":[]},{"location":"development/#clone-the-repository","level":3,"title":"Clone the repository","text":"<pre><code>git clone https://github.com/FuzzyGrim/Yamtrack.git\ncd Yamtrack\n</code></pre>","path":["Development"],"tags":[]},{"location":"development/#start-redis","level":3,"title":"Start Redis","text":"<p>If you do not already have Redis running locally, start it with Docker:</p> <pre><code>docker run -d --name redis -p 6379:6379 --restart unless-stopped redis:8-alpine\n</code></pre>","path":["Development"],"tags":[]},{"location":"development/#install-dependencies","level":3,"title":"Install dependencies","text":"<p>uv manages the Python environment and dependencies:</p> <pre><code>uv sync\nuv run pre-commit install\n</code></pre> <p>Installing the development dependencies includes pre-commit. After <code>uv run pre-commit install</code>, the hooks run automatically before each commit. You can also run the full hook set manually:</p> <pre><code>uv run pre-commit run --all-files\n</code></pre>","path":["Development"],"tags":[]},{"location":"development/#configure-environment-values","level":3,"title":"Configure environment values","text":"<p>Create a <code>.env</code> file in the repository root:</p> <pre><code>TMDB_API=API_KEY\nMAL_API=API_KEY\nIGDB_ID=IGDB_ID\nIGDB_SECRET=IGDB_SECRET\nSTEAM_API_KEY=STEAM_API_SECRET\nBGG_API_TOKEN=BGG_API_TOKEN\nSECRET=SECRET\nDEBUG=True\n</code></pre> <p>See Environment Variables for the full list of supported settings.</p>","path":["Development"],"tags":[]},{"location":"development/#prepare-the-database","level":3,"title":"Prepare the database","text":"<pre><code>cd src\nuv run manage.py migrate\n</code></pre>","path":["Development"],"tags":[]},{"location":"development/#run-the-app","level":3,"title":"Run the app","text":"<p>Run the Django development server:</p> <pre><code>cd src\nuv run manage.py runserver\n</code></pre> <p>Run the Celery worker with the scheduler in another terminal:</p> <pre><code>cd src\nuv run celery -A config worker --beat --scheduler django --loglevel DEBUG\n</code></pre> <p>Run Tailwind in another terminal:</p> <pre><code>cd src\ntailwindcss -i ./static/css/input.css -o ./static/css/tailwind.css --watch\n</code></pre> <p>Open the development server at:</p> <pre><code>http://localhost:8000\n</code></pre>","path":["Development"],"tags":[]},{"location":"development/#documentation","level":2,"title":"Documentation","text":"<p>Install the docs dependency group, then serve the docs from the current checkout:</p> <pre><code>uv sync --group docs\nuv run zensical serve\n</code></pre>","path":["Development"],"tags":[]},{"location":"development/#testing","level":2,"title":"Testing","text":"<p>Install Playwright browsers before running integration tests:</p> <pre><code>uv run playwright install\n</code></pre> <p>Run the Django test suite from the <code>src</code> directory:</p> <pre><code>cd src\nuv run manage.py test --parallel\n</code></pre> <p>To run tests for a specific app or test module, pass the test label after <code>test</code>:</p> <pre><code>cd src\nuv run manage.py test app.tests --parallel\n</code></pre>","path":["Development"],"tags":[]},{"location":"env-variables/","level":1,"title":"Environment Variables","text":"<p>This page outlines the environment variables used in the YamTrack project.</p>","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#media-sources","level":2,"title":"Media Sources","text":"Name Notes <code>TMDB_API</code> The Movie Database API key for movies and TV shows. A default key is provided. <code>TMDB_NSFW</code> Default to <code>False</code>. Set to <code>True</code> to include adult content in TV and movie searches. <code>TMDB_LANG</code> TMDB metadata language. Uses a language code in ISO 639-1 (e.g., <code>en</code>). Also supports a country code in ISO 3166-1 (e.g., <code>en-US</code>). Metadata is cached for a few hours in Redis. You may need to clear the cache to see the new language immediately. <code>MAL_API</code> MyAnimeList API key for anime and manga. A default key is provided. <code>MAL_NSFW</code> Default to <code>False</code>. Set to <code>True</code> to include adult content in anime and manga searches from MyAnimeList. <code>MU_NSFW</code> Default to <code>False</code>. Set to <code>True</code> to include adult content in manga searches from MangaUpdates. <code>IGDB_ID</code> IGDB API key for games. A default key is provided, but it's recommended to get your own as it has a low rate limit. <code>IGDB_SECRET</code> IGDB API secret for games. A default value is provided, but it's recommended to get your own as it has a low rate limit. <code>IGDB_NSFW</code> Default to <code>False</code>. Set to <code>True</code> to include adult content in game searches. <code>HARDCOVER_API</code> Hardcover API key for books. A default key is provided, but it's recommended to get your own as it has a low rate limit. Custom values must include the <code>Bearer</code> prefix. <code>COMICVINE_API</code> ComicVine API key for comics. A default key is provided, but it's recommended to get your own as it has a low rate limit.","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#media-import","level":2,"title":"Media Import","text":"<p>See media-imports.</p>","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#redis-and-django-settings","level":2,"title":"Redis and Django Settings","text":"Name Notes <code>REDIS_URL</code> Default to <code>redis://localhost:6379</code>. Set this to your Redis server URL, in the format of <code>redis://{service}:{port}</code>. In the Docker Compose examples this is <code>redis://redis:6379</code>. If Yamtrack shares a Docker network with another container or service named <code>redis</code>, use the Yamtrack Redis container name instead: <code>redis://yamtrack-redis:6379</code>. <code>CELERY_REDIS_URL</code> Default to the value of <code>REDIS_URL</code>. Set this to your Redis server URL for Celery if you need a different value than <code>REDIS_URL</code>. <code>REDIS_PREFIX</code> Optional prefix for Redis keys and channels to enable isolation when sharing a Redis instance across multiple applications. Useful for ACL-based permission control. <code>SECRET</code> Secret key used for cryptographic signing. Should be a random string. <code>URLS</code> Shortcut to set both the <code>CSRF</code> and <code>ALLOWED_HOSTS</code> settings. Comma-separated list of URLs (e.g., <code>https://yamtrack.mydomain.com</code>). <code>ALLOWED_HOSTS</code> Comma-separated list of host/domain names that this Django site can serve (e.g., <code>yamtrack.mydomain.com</code>). Default to <code>*</code> for all hosts. <code>CSRF</code> Comma-separated list of trusted origins for <code>POST</code> requests when using reverse proxies (e.g., <code>https://yamtrack.mydomain.com</code>). <code>REGISTRATION</code> Default to <code>True</code>. Set to <code>False</code> to disable user registration. <code>DEBUG</code> Default to <code>False</code>. Set to <code>True</code> for debugging. <code>ADMIN_ENABLED</code> Default to <code>False</code>. Set to <code>True</code> to enable the Django admin interface. <code>TRACK_TIME</code> Default to <code>True</code>. Set to <code>False</code> to disable time tracking in Yamtrack.","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#user-and-system-configuration","level":2,"title":"User and System Configuration","text":"Name Notes <code>PUID</code> User ID for the app. Default to <code>1000</code>. <code>PGID</code> Group ID for the app. Default to <code>1000</code>. <code>TZ</code> Timezone (e.g., <code>Europe/Berlin</code>). Default to <code>UTC</code>. <code>WEB_CONCURRENCY</code> Number of web server processes. Default to <code>1</code>. <code>SOCIAL_PROVIDERS</code> Comma-separated list of social authentication providers to enable (e.g., <code>allauth.socialaccount.providers.openid_connect,allauth.socialaccount.providers.github</code>). <code>SOCIALACCOUNT_PROVIDERS</code> JSON configuration for social providers. See the Docs for an OIDC configuration example. <code>ACCOUNT_DEFAULT_HTTP_PROTOCOL</code> Protocol for social providers. If your <code>redirect_uri</code> in OIDC config is <code>https</code>, set this to <code>https</code>. Default is determined based on your <code>CSRF</code> settings. <code>ACCOUNT_LOGOUT_REDIRECT_URL</code> Absolute URL to redirect users after logout. Useful for OpenID Connect providers to ensure complete logout from the external authentication provider. <code>SOCIALACCOUNT_ONLY</code> Default to <code>False</code>. Set to <code>True</code> to disable local authentication when using social authentication only. <code>REDIRECT_LOGIN_TO_SSO</code> Default to <code>False</code>. Set to <code>True</code> to automatically redirect (using JavaScript) to the SSO provider when there's only one available. Useful for single sign-on setups. <code>YAMTRACK_AUTO_LOGIN_USERNAME</code> Default to <code>None</code>, which disables this feature. Specify a username to automatically login with the selected user. The user needs to be existing and active.","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#celery-health-check","level":2,"title":"Celery Health Check","text":"Name Notes <code>HEALTHCHECK_CELERY_PING_TIMEOUT</code> Default to <code>1</code>. Increases the timeout for the health check ping to Celery. This is useful for slow connections.","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#postgresql-environment-variables-yamtrack-container","level":2,"title":"PostgreSQL Environment Variables (YamTrack Container)","text":"Name Notes <code>DB_HOST</code> The hostname or IP address of the PostgreSQL server. If not set, SQLite is used as the default database. <code>DB_PORT</code> The port number on which the PostgreSQL server is listening. <code>DB_NAME</code> The name of the database to connect to. <code>DB_USER</code> The username used to authenticate with the PostgreSQL server. <code>DB_PASSWORD</code> The password for the specified user. <p>Note: Check the example <code>docker-compose.postgres.yml</code> in the root directory of the repo for a PostgreSQL configuration example.</p>","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#external-postgresql-database-with-ssl-yamtrack-container","level":3,"title":"External PostgreSQL database with SSL (YamTrack Container)","text":"Name Notes <code>DB_SSL_MODE</code> Determines whether or with what priority a secure SSL TCP/IP connection will be negotiated with the server. See the official documentation. <code>DB_SSL_CERT_MODE</code> Determines whether a client certificate may be sent to the server, and whether the server is required to request one. See the official documentation.","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#docker-secrets-support","level":2,"title":"Docker Secrets Support","text":"<p>YamTrack supports reading sensitive configuration values from Docker secrets files. The following environment variables can alternatively be provided as secrets:</p> Environment Variable Secret File Equivalent <code>SECRET</code> <code>SECRET_FILE</code> <code>DB_NAME</code> <code>DB_NAME_FILE</code> <code>DB_USER</code> <code>DB_USER_FILE</code> <code>DB_PASSWORD</code> <code>DB_PASSWORD_FILE</code> <code>TMDB_API</code> <code>TMDB_API_FILE</code> <code>MAL_API</code> <code>MAL_API_FILE</code> <code>IGDB_ID</code> <code>IGDB_ID_FILE</code> <code>IGDB_SECRET</code> <code>IGDB_SECRET_FILE</code> <code>HARDCOVER_API</code> <code>HARDCOVER_API_FILE</code> <code>COMICVINE_API</code> <code>COMICVINE_API_FILE</code> <code>TRAKT_API</code> <code>TRAKT_API_FILE</code> <code>SIMKL_ID</code> <code>SIMKL_ID_FILE</code> <code>SIMKL_SECRET</code> <code>SIMKL_SECRET_FILE</code> <code>SOCIALACCOUNT_PROVIDERS</code> <code>SOCIALACCOUNT_PROVIDERS_FILE</code>","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#host-under-subpath","level":2,"title":"Host under subpath","text":"Name Notes <code>BASE_URL</code> To host YamTrack under a subpath like <code>https://example.com/yamtrack</code>, set this to <code>/yamtrack</code>, without trailing slash.","path":["Environment Variables"],"tags":[]},{"location":"env-variables/#self-signed-certificates","level":2,"title":"Self-signed certificates","text":"Name Notes <code>REQUESTS_CA_BUNDLE</code> Path to a custom CA certificate bundle file for SSL verification. Useful for self-hosted authentication providers with self-signed certificates (e.g., <code>/etc/ssl/certs/ca-certificates.crt</code>). This requires the CA certificate to be present in the host's CA bundle.","path":["Environment Variables"],"tags":[]},{"location":"media-imports/","level":1,"title":"Media Imports","text":"<p>Most media import sources can be used directly by entering your username or importing via CSV without any additional configuration. This guide covers only those services that may require special setup for certain scenarios.</p> <p>Note</p> <p>The import process matches your data with the IDs from the sources that Yamtrack uses. Each media type uses different sources, so make sure to have them properly configured. See Media Sources for more information.</p>","path":["Media Imports"],"tags":[]},{"location":"media-imports/#trakt","level":2,"title":"Trakt","text":"","path":["Media Imports"],"tags":[]},{"location":"media-imports/#public-profile-import","level":3,"title":"Public Profile Import","text":"<p>If you have a public Trakt profile, you can import your media by simply entering your public username.</p> <p>Optional Configuration:</p> Environment Variable Description <code>TRAKT_API</code> Your Trakt Client ID. A default value is provided, but you may want to use your own if you encounter rate limit issues.","path":["Media Imports"],"tags":[]},{"location":"media-imports/#private-profile-import-oauth","level":3,"title":"Private Profile Import (OAuth)","text":"<p>For private Trakt profiles, you'll need to set up OAuth authentication:</p> <ol> <li>Create a Trakt application at Trakt API Apps</li> <li>Set the Redirect URI to: <code>https://your_domain.com/import/trakt/private</code></li> <li>Configure the following environment variables:</li> </ol> Environment Variable Description <code>TRAKT_API</code> Your Trakt Client ID <code>TRAKT_API_SECRET</code> Your Trakt Client Secret","path":["Media Imports"],"tags":[]},{"location":"media-imports/#simkl","level":2,"title":"Simkl","text":"<p>Create a SIMKL application: https://simkl.com/settings/developer/new/custom-search/</p>","path":["Media Imports"],"tags":[]},{"location":"media-imports/#configuration","level":3,"title":"Configuration","text":"Environment Variable Description <code>SIMKL_ID</code> Simkl API key for importing media. A default key is provided, but you can obtain your own at Simkl Developer. <code>SIMKL_SECRET</code> Simkl API secret for importing media. A default secret is provided, but you can obtain your own at Simkl Developer.","path":["Media Imports"],"tags":[]},{"location":"media-imports/#anilist","level":2,"title":"AniList","text":"","path":["Media Imports"],"tags":[]},{"location":"media-imports/#public-profile-import_1","level":3,"title":"Public Profile Import","text":"<p>If you have a public AniList profile, you can import your media by simply entering your username.</p>","path":["Media Imports"],"tags":[]},{"location":"media-imports/#private-profile-import-oauth_1","level":3,"title":"Private Profile Import (OAuth)","text":"<p>For private AniList profiles, you'll need to set up OAuth authentication:</p> <ol> <li>Go to https://anilist.co/settings/developer and create a new application</li> <li>Set the Redirect URI to: <code>https://your_domain.com/import/anilist/private</code></li> <li>Configure the following environment variables:</li> </ol> Environment Variable Description <code>ANILIST_ID</code> Your AniList Client ID <code>ANILIST_SECRET</code> Your AniList Client Secret","path":["Media Imports"],"tags":[]},{"location":"media-imports/#steam","level":2,"title":"Steam","text":"","path":["Media Imports"],"tags":[]},{"location":"media-imports/#configuration_1","level":3,"title":"Configuration","text":"<p>Steam import requires a Steam API key and your Steam ID 64.</p> <ol> <li>Get your Steam API key at https://steamcommunity.com/dev/apikey</li> <li>Configure the following environment variable:</li> </ol> Environment Variable Description <code>STEAM_API_KEY</code> Your Steam API key","path":["Media Imports"],"tags":[]},{"location":"media-imports/#import-requirements","level":3,"title":"Import Requirements","text":"<ul> <li>Steam ID 64: Instead of your Steam username, you must provide your Steam ID 64. You can find it on your Steam account details page under your username.</li> <li>Profile Visibility: Your Steam profile must be public if the API key you are using is not linked to the Steam ID you are requesting.</li> </ul>","path":["Media Imports"],"tags":[]},{"location":"media-imports/#yamtrack-csv-format","level":2,"title":"Yamtrack CSV format","text":"<p>Use this format to bulk-import media into YamTrack. Every row represents a single media instance.</p> <p>The order of rows matters for TV data: import <code>tv</code> rows first, then <code>season</code> rows, then <code>episode</code> rows. Episodes depend on their parent season, and seasons depend on their parent TV show.</p> Column Title Required? Example Value Notes media_id No 12345 ID of the item on the chosen provider. Must be unique per <code>(source, media_type)</code>. Leave blank to let YamTrack fetch the title from the provider automatically with the <code>title</code>. source Yes tmdb One of: <code>tmdb</code>, <code>mal</code>, <code>mangaupdates</code>, <code>igdb</code>, <code>openlibrary</code>, <code>hardcover</code>, <code>comicvine</code>, <code>manual</code>. media_type Yes movie One of: <code>tv</code>, <code>season</code>, <code>episode</code>, <code>movie</code>, <code>anime</code>, <code>manga</code>, <code>game</code>, <code>book</code>, <code>comic</code>. For TV data, rows must be ordered as <code>tv</code>, then <code>season</code>, then <code>episode</code>. title No Inception Leave blank to let YamTrack fetch the title from the provider automatically with the <code>media_id</code>. image No https://image.tmdb.org/t/p/w500/qmDpIH...jpg Public poster/cover URL. Leave blank to auto-fetch from the provider automatically with the <code>media_id</code> or <code>title</code>. season_number Cond. 2 Required when <code>media_type = season</code>; also required (together with <code>episode_number</code>) when <code>media_type = episode</code>. episode_number Cond. 5 Required when <code>media_type = episode</code>; ignored otherwise. score No 8.5 Decimal 0–10 (stored as a 100-point integer internally). status Yes Completed One of: <code>Completed</code>, <code>In progress</code>, <code>Planning</code>, <code>Paused</code>, <code>Dropped</code>. Capitalisation must match. notes No Watched in cinema Free-text. start_date No 2023-01-16 03:56:13+00:00 Full ISO-8601 timestamp with timezone <code>YYYY-MM-DD HH:MM:SS±HH:MM</code>. end_date No 2023-02-10 22:15:00+00:00 Same format as <code>start_date</code>. progress No 10 Numeric progress (e.g., chapters, pages, minutes). Ignored for tv and season because progress is tracked with episode rows.","path":["Media Imports"],"tags":[]},{"location":"setup/","level":1,"title":"Setup","text":"<p>This page covers running Yamtrack with Docker.</p>","path":["Setup"],"tags":[]},{"location":"setup/#docker","level":2,"title":"Docker","text":"<p>The Docker setup uses the published Yamtrack image, so you do not need to clone the repository. Download a Compose file, adjust the environment values, and start the containers.</p>","path":["Setup"],"tags":[]},{"location":"setup/#prerequisites","level":2,"title":"Prerequisites","text":"<ul> <li>Docker and Docker Compose installed.</li> </ul>","path":["Setup"],"tags":[]},{"location":"setup/#1-download-a-compose-file","level":2,"title":"1) Download a Compose file","text":"<p>For the default SQLite setup:</p> <pre><code>curl -LO https://raw.githubusercontent.com/FuzzyGrim/Yamtrack/release/docker-compose.yml\n</code></pre> <p>SQLite is enough for most personal installs. It stores the database in the local <code>db</code> directory created beside the Compose file.</p> <p>If you prefer PostgreSQL, download the PostgreSQL example instead:</p> <pre><code>curl -LO https://raw.githubusercontent.com/FuzzyGrim/Yamtrack/release/docker-compose.postgres.yml\n</code></pre>","path":["Setup"],"tags":[]},{"location":"setup/#2-update-the-environment-values","level":2,"title":"2) Update the environment values","text":"<p>Open the Compose file and replace the example secret:</p> <pre><code>SECRET=longstring\n</code></pre> <p>Use a long random value for <code>SECRET</code>. If you are running Yamtrack behind a reverse proxy, also set <code>URLS</code> to the public origin:</p> <pre><code>URLS=https://yamtrack.mydomain.com\n</code></pre> <p>The URL must include the protocol (<code>https</code> or <code>http</code>) and should not include a trailing slash or application path. Multiple origins can be separated with commas.</p> <p>For the full list of supported settings, see Environment Variables.</p>","path":["Setup"],"tags":[]},{"location":"setup/#3-start-yamtrack","level":2,"title":"3) Start Yamtrack","text":"<p>For SQLite:</p> <pre><code>docker compose up -d\n</code></pre> <p>For PostgreSQL:</p> <pre><code>docker compose -f docker-compose.postgres.yml up -d\n</code></pre> <p>If your system uses the older Compose command, replace <code>docker compose</code> with <code>docker-compose</code>.</p>","path":["Setup"],"tags":[]},{"location":"setup/#4-open-the-app","level":2,"title":"4) Open the app","text":"<p>Open Yamtrack at:</p> <pre><code>http://localhost:8000\n</code></pre> <p>If you changed the port mapping in the Compose file, use the port you configured.</p>","path":["Setup"],"tags":[]},{"location":"setup/#reverse-proxy-setup","level":2,"title":"Reverse Proxy Setup","text":"<p>When using a reverse proxy, <code>URLS</code> tells Yamtrack which public origins it should trust. This is required for CSRF protection, OAuth redirects, and webhook integrations.</p> <p>Example:</p> <pre><code>services:\n yamtrack:\n environment:\n - URLS=https://yamtrack.mydomain.com\n</code></pre> <p>If you see <code>403 Forbidden</code> behind a proxy, check that <code>URLS</code> exactly matches the public URL you use in the browser.</p>","path":["Setup"],"tags":[]},{"location":"setup/#troubleshooting","level":2,"title":"Troubleshooting","text":"<p>Check the Yamtrack container logs:</p> <pre><code>docker logs -f yamtrack\n</code></pre> <p>Check the Redis container logs:</p> <pre><code>docker logs -f yamtrack-redis\n</code></pre>","path":["Setup"],"tags":[]},{"location":"social-auth/","level":1,"title":"Social Authentication","text":"<p>YamTrack supports a variety of authentication methods through django-allauth, allowing you to integrate with popular social providers and identity management systems.</p>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#getting-started","level":2,"title":"Getting Started","text":"<p>Social authentication in YamTrack is configured through environment variables. You'll need to:</p> <ol> <li>Enable the social providers you want to use</li> <li>Configure the provider-specific settings</li> <li>Set up your provider to work with YamTrack</li> </ol>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#enabling-social-providers","level":2,"title":"Enabling Social Providers","text":"<p>Use the <code>SOCIAL_PROVIDERS</code> environment variable to specify which providers you want to enable:</p> <pre><code>SOCIAL_PROVIDERS=allauth.socialaccount.providers.openid_connect,allauth.socialaccount.providers.github\n</code></pre> <p>This example enables both OpenID Connect and GitHub authentication.</p>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#configuring-providers","level":2,"title":"Configuring Providers","text":"<p>Provider configuration is done through the <code>SOCIALACCOUNT_PROVIDERS</code> environment variable. This should be a JSON string containing all the necessary settings for your providers.</p>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#example-openid-connect-with-authelia","level":3,"title":"Example: OpenID Connect with Authelia","text":"<pre><code>SOCIAL_PROVIDERS=allauth.socialaccount.providers.openid_connect\nSOCIALACCOUNT_PROVIDERS={\"openid_connect\":{\"OAUTH_PKCE_ENABLED\":true,\"APPS\":[{\"provider_id\":\"authelia\",\"name\":\"Authelia\",\"client_id\":\"your-client-id\",\"secret\":\"your-client-secret\",\"settings\":{\"server_url\":\"https://authelia.yourdomain.com/.well-known/openid-configuration\"}}]}}\n</code></pre>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#example-github","level":3,"title":"Example: GitHub","text":"<pre><code>SOCIAL_PROVIDERS=allauth.socialaccount.providers.github\nSOCIALACCOUNT_PROVIDERS={\"github\":{\"SCOPE\":[\"user\",\"repo\",\"read:org\"]}}\n</code></pre>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#provider-specific-setup","level":2,"title":"Provider-Specific Setup","text":"","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#openid-connect-authelia-authentik-keycloak-etc","level":3,"title":"OpenID Connect (Authelia, Authentik, Keycloak, etc.)","text":"<ol> <li>In your OIDC provider, create a new application/client:</li> <li>Set the redirect URI to: <code>https://yamtrack.yourdomain.com/accounts/oidc/[provider_id]/login/callback/</code></li> <li>Replace <code>[provider_id]</code> with the value you set in the <code>provider_id</code> field in your configuration</li> <li>For example: <code>https://yamtrack.yourdomain.com/accounts/oidc/authelia/login/callback/</code></li> <li> <p>Set <code>token_endpoint_auth_method</code> to <code>client_secret_post</code>.</p> </li> <li> <p>Configure YamTrack with the client ID and secret from your provider</p> </li> </ol>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#authentik-example","level":4,"title":"Authentik Example","text":"<p>In Authentik:</p> <ol> <li>Create an OAuth2/OpenID Provider (under Applications/Providers) with these settings:</li> <li>Name: Yamtrack</li> <li> <p>Redirect URI: <code>https://yamtrack.yourdomain.com/accounts/oidc/authentik/login/callback/</code></p> </li> <li> <p>In YamTrack, configure:</p> <pre><code>SOCIAL_PROVIDERS=allauth.socialaccount.providers.openid_connect\nSOCIALACCOUNT_PROVIDERS={\"openid_connect\":{\"OAUTH_PKCE_ENABLED\":true,\"APPS\":[{\"provider_id\":\"authentik\",\"name\":\"Authentik\",\"client_id\":\"<Client ID>\",\"secret\":\"<Client Secret>\",\"settings\":{\"server_url\":\"https://authentik.yourdomain.com/application/o/yamtrack/.well-known/openid-configuration\"}}]}}\n</code></pre> </li> </ol>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#connecting-social-accounts-to-existing-users","level":2,"title":"Connecting Social Accounts to Existing Users","text":"<p>To add social authentication to an existing user:</p> <ol> <li>Log in to YamTrack with your local username and password</li> <li>Click the settings icon in the sidebar</li> <li>Click \"Accounts\" in the settings menu</li> <li>In the \"Third-Party Connections\" section, click \"Manage Account Connections\"</li> <li>You'll see a list of available social providers - click the provider you want to link to your account</li> </ol> <p>Once connected, you can use either your local credentials or the social provider to log in to your account.</p>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#additional-options","level":2,"title":"Additional Options","text":"","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#disable-local-authentication","level":3,"title":"Disable Local Authentication","text":"<p>If you want to use only social authentication and disable the traditional username/password login:</p> <pre><code>SOCIALACCOUNT_ONLY=True\n</code></pre>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#redirect-login-to-sso","level":3,"title":"Redirect Login to SSO","text":"<p>To automatically redirect users from the login page to your SSO provider:</p> <pre><code>REDIRECT_LOGIN_TO_SSO=True\n</code></pre>","path":["Social Authentication"],"tags":[]},{"location":"social-auth/#disable-registration","level":3,"title":"Disable Registration","text":"<p>To prevent new users from registering (useful for private instances):</p> <pre><code>REGISTRATION=False\n</code></pre>","path":["Social Authentication"],"tags":[]}]} |