# TeamVault
TeamVault is an open-source web-based shared password manager for behind-the-firewall installation. It requires Python 3.10+ and PostgreSQL (with the unaccent extension).
## Installation
apt-get install libffi-dev libldap2-dev libpq-dev libsasl2-dev python3.X-dev postgresql-contrib
pip install teamvault
teamvault setup
vim /etc/teamvault.conf
# note that the teamvault database user will need SUPERUSER privileges
# during this step in order to activate the unaccent extension
teamvault upgrade
teamvault plumbing createsuperuser
teamvault run
## Update
pip install --upgrade teamvault
teamvault upgrade
## Development
### Start a PostgreSQL database
Create a database and superuser for TeamVault to use, for example by starting a Docker container:
docker run --rm --detach --publish=5432:5432 --name teamvault-postgres -e POSTGRES_USER=teamvault -e POSTGRES_PASSWORD=teamvault postgres:latest
### Run Webpack to serve static files
To compile all JS & SCSS files, you'll need to install all required packages via bun (or yarn/npm) with node >= v18.
Use ```bun/yarn/npm run serve``` to start a dev server.
**Note**:
Some MacOS users have reported errors when running the dev server via bun. In this case feel free to switch to NPM.
### Configure your Virtualenv via uv
uv sync
### Setup TeamVault
export TEAMVAULT_CONFIG_FILE=teamvault.cfg
teamvault setup
vim teamvault.cfg # base_url = http://localhost:8000
# session_cookie_secure = False
# database config as needed
teamvault upgrade
teamvault plumbing createsuperuser
### Start the development server
teamvault run
Now open http://localhost:8000
## Scheduled background jobs
We use [huey](https://huey.readthedocs.io/en/latest/) to run background jobs. This requires you to run a second process, in parallel to TeamVault itself. You can launch it via `manage.py`:
teamvault run_huey
## Release process
1. Bump the version in ```teamvault/__version__.py``` and ```pyproject.toml```
2. Update CHANGELOG.md with the new version and current date
3. Make a release commit with the changes made above
4. Push the commit
5. Run ```./build.sh``` to create a new package
6. Sign and push the artifacts to PyPI via ```uv publish```
7. Test that the package can be installed: ```uv run --isolated --no-cache --prerelease allow --with teamvault --no-project -- teamvault --version```
8. Add a new GitHub release
Raw data
{
"_id": null,
"home_page": null,
"name": "teamvault",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "password, safe, manager, sharing",
"author": "Seibert Group GmbH",
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/c8/6f/646b37cc1a68e84d4392e86682bc4e3764940a3078f18b7c6b402d93c70f/teamvault-0.10.1.tar.gz",
"platform": null,
"description": "# TeamVault\n\nTeamVault is an open-source web-based shared password manager for behind-the-firewall installation. It requires Python 3.10+ and PostgreSQL (with the unaccent extension).\n\n## Installation\n\n\tapt-get install libffi-dev libldap2-dev libpq-dev libsasl2-dev python3.X-dev postgresql-contrib\n\tpip install teamvault\n\tteamvault setup\n\tvim /etc/teamvault.conf\n\t# note that the teamvault database user will need SUPERUSER privileges\n\t# during this step in order to activate the unaccent extension\n\tteamvault upgrade\n\tteamvault plumbing createsuperuser\n\tteamvault run\n\n## Update\n\n\tpip install --upgrade teamvault\n\tteamvault upgrade\n\n## Development\n### Start a PostgreSQL database\nCreate a database and superuser for TeamVault to use, for example by starting a Docker container:\n\n\tdocker run --rm --detach --publish=5432:5432 --name teamvault-postgres -e POSTGRES_USER=teamvault -e POSTGRES_PASSWORD=teamvault postgres:latest\n\n\n### Run Webpack to serve static files\nTo compile all JS & SCSS files, you'll need to install all required packages via bun (or yarn/npm) with node >= v18.\n\nUse ```bun/yarn/npm run serve``` to start a dev server.\n\n**Note**:\nSome MacOS users have reported errors when running the dev server via bun. In this case feel free to switch to NPM.\n\n\n### Configure your Virtualenv via uv\n\tuv sync\n\n### Setup TeamVault\n\texport TEAMVAULT_CONFIG_FILE=teamvault.cfg\n\tteamvault setup\n\tvim teamvault.cfg # base_url = http://localhost:8000\n\t # session_cookie_secure = False\n\t # database config as needed\n\tteamvault upgrade\n\tteamvault plumbing createsuperuser\n\n### Start the development server\n\tteamvault run\n\nNow open http://localhost:8000\n\n## Scheduled background jobs\n\nWe use [huey](https://huey.readthedocs.io/en/latest/) to run background jobs. This requires you to run a second process, in parallel to TeamVault itself. You can launch it via `manage.py`:\n\n teamvault run_huey\n\n## Release process\n1. Bump the version in ```teamvault/__version__.py``` and ```pyproject.toml```\n2. Update CHANGELOG.md with the new version and current date\n3. Make a release commit with the changes made above\n4. Push the commit\n5. Run ```./build.sh``` to create a new package\n6. Sign and push the artifacts to PyPI via ```uv publish```\n7. Test that the package can be installed: ```uv run --isolated --no-cache --prerelease allow --with teamvault --no-project -- teamvault --version```\n8. Add a new GitHub release\n",
"bugtrack_url": null,
"license": null,
"summary": "Keep your passwords behind the firewall",
"version": "0.10.1",
"project_urls": {
"Source": "https://github.com/seibert-media/teamvault"
},
"split_keywords": [
"password",
" safe",
" manager",
" sharing"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "afc4702d4fdfd8db93d21e443e3b7926706c1ec5e68414fd68e149f00f6dc4bf",
"md5": "19ade988abd3d314d1a05587eee2faa1",
"sha256": "ae8281a3a371bfbc047c619b832b95584d0deb8af6744612e181bd28dbc07db9"
},
"downloads": -1,
"filename": "teamvault-0.10.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "19ade988abd3d314d1a05587eee2faa1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 13731056,
"upload_time": "2025-08-07T22:45:32",
"upload_time_iso_8601": "2025-08-07T22:45:32.913048Z",
"url": "https://files.pythonhosted.org/packages/af/c4/702d4fdfd8db93d21e443e3b7926706c1ec5e68414fd68e149f00f6dc4bf/teamvault-0.10.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c86f646b37cc1a68e84d4392e86682bc4e3764940a3078f18b7c6b402d93c70f",
"md5": "c041be3ee612eb3b69a2ea483d5b2b57",
"sha256": "bf714b36b4d4596761ecac61fc316b0442f72d2680129d56aa15f7e74caf35d5"
},
"downloads": -1,
"filename": "teamvault-0.10.1.tar.gz",
"has_sig": false,
"md5_digest": "c041be3ee612eb3b69a2ea483d5b2b57",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 13666397,
"upload_time": "2025-08-07T22:45:38",
"upload_time_iso_8601": "2025-08-07T22:45:38.329873Z",
"url": "https://files.pythonhosted.org/packages/c8/6f/646b37cc1a68e84d4392e86682bc4e3764940a3078f18b7c6b402d93c70f/teamvault-0.10.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-08-07 22:45:38",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "seibert-media",
"github_project": "teamvault",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "teamvault"
}