{"id":24623038,"url":"https://github.com/cdent/tankdock","last_synced_at":"2026-04-15T13:32:30.895Z","repository":{"id":18797627,"uuid":"22011593","full_name":"cdent/tankdock","owner":"cdent","description":"Tank in Docker","archived":false,"fork":false,"pushed_at":"2014-08-10T19:40:25.000Z","size":160,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-04T15:43:53.359Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cdent.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-07-19T14:38:40.000Z","updated_at":"2014-07-20T18:32:25.000Z","dependencies_parsed_at":"2022-07-22T10:22:31.884Z","dependency_job_id":null,"html_url":"https://github.com/cdent/tankdock","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cdent/tankdock","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Ftankdock","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Ftankdock/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Ftankdock/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Ftankdock/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cdent","download_url":"https://codeload.github.com/cdent/tankdock/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cdent%2Ftankdock/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31842873,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T13:28:40.153Z","status":"ssl_error","status_checked_at":"2026-04-15T13:28:29.396Z","response_time":63,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-25T03:14:03.982Z","updated_at":"2026-04-15T13:32:30.877Z","avatar_url":"https://github.com/cdent.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# What\n\nTankDock is [Tank](https://tank.peermore.com/) in\n[Docker](https://docker.com/) so that people can run their own Tank\nservice. If you don't want to run your own, feel free to use the\n[existing public server](https://tank.peermore.com/).\n\nWhen fully working the service will run under an nginx+uwsgi combination,\nwith a small memcached, and storage and logging to local disk.\n\n# Caveats\n\nPlease note that at this time there are a few issues which make this\nnot ready for prime time (see Todo below as well):\n\n* Your content is not stored in persistent storage. When you shut\n  down your container, your content is **gone**.\n* SSL should be used whenever oauth2 is being used.\n\n# Status\n\nStill under development but potentially ready for some testing by the\nstrong of heart and mind.\n\n# Structure\n\nThis repo is divided into several parts:\n\n* The top level directory contains a Dockerfile for building (on\n  Fedora) the basic requirements for an _unconfigured_ Tank\n  installation.\n\n  The Dockerfile installs the necessary RPMs and Python packages\n  and creates the basic directory structure for a tank installation.\n  It also `ADD`s the necessary configuration files and service\n  start scripts (`runner.sh`).\n\n  Eventually this container will be registered in the Docker hub.\n\n* Two submodules: `tank` and `tiddlywebplugins.oauth` for Python\n  code that is not yet available on PyPI.\n\n* A `runner` subdirectory that contains another Dockerfile which\n  uses the unconfigured container s the base for creating a\n  configured installation.\n\n  This directory contains a `tiddlywebconfig.py` that must be\n  customized for your specific use (see below).\n\n# Making Your Own\n\nFirst, clone the repo, cd into it and:\n\n```\ngit submodule init\ngit submodule update\n```\n\nthen:\n\nCurrently, building a container with a custom Tank in it is a two\nstep process. If you are not familiar with Docker, [the\ndocs](http://docs.docker.com/) are good.\n\n## 1: Build a base container\n\nThe top-level Dockerfile describes a container with all the\nnecessary software, filesystem structure, and generic configuration\nto make a running system. Eventually this container will be\navailable for download so this step will not be required. For now,\nto build your own, from within the checked out repository run:\n\n```\nsudo docker build -t cdent/tankdock .\n```\n\nThis will churn away for a while gathering various pieces.\n\nWhen it is done you will have a container tagged \"cdent/tankdock\"\navailable locally and you're ready for step 2.\n\n## 2: Build a custom Tank\n\nChange to the directory `runner`. In there is a `tiddlywebconfig.py`\nfile which must be edited to set custom settings. The comments\ndescribe what needs to be set. After \"# End of Customizations\"\nnothing needs to be changed. What is being done here is:\n\n* Setting the hostname for the service (this is the externally\n  addressable hostname).\n* Setting a secret key for cookies.\n* Setting the id and secret key for _at least_ one oauth2 identity\n  provider. GitHub is [relatively easy to set\n  up](https://github.com/settings/applications).\n* Setting [AWS](http://aws.amazon.com/) S3 bucket settings.\n\nOnce the settings have been made another container needs to be built:\n\n```\nsudo docker build -t cdent/tank .\n```\n\nIf you used a different name building the base container, change the\n\"FROM\" line in the Dockerfile.\n\nNow you have a Tank you can run.\n\n# Run\n\nTo run the customer container you need to decide what port you would\nlike to map to the web server inside the container. I use `80`. In\norder for 80 to work no other web server can be running.\n\n```\nsudo docker run -t -i -p 80:80 cdent/tank\n```\n\nIf you see something like:\n\n```\nspawned uWSGI worker 1 (pid: 24, cores: 10)\nspawned uWSGI worker 2 (pid: 33, cores: 10)\n```\n\nyou should be able to go to the host URL you configured and see\nTank.\n\n# Todo\n\n* Mount local disk for tiddler storage and logging.\n* SSL. We must have it if oauth is being used.\n* Making S3 storage for binaries optional.\n* Getting twsock in the mix for websocket notifications.\n* Initializing search index at start time.\n* twikifier\n\n## Perhaps\n\n* Only run uwsgi, have something external to the container do HTTP.\n\n# Who\n\nCopyright 2014 Peermore Limited\nBSD License\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdent%2Ftankdock","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcdent%2Ftankdock","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcdent%2Ftankdock/lists"}