mirror of
https://github.com/iv-org/documentation.git
synced 2025-12-16 17:14:07 -05:00
Merge e883c42062 into 4902ecd0b0
This commit is contained in:
commit
6dc8ebb93b
7 changed files with 298 additions and 0 deletions
134
docs/db-migration-backup-docker.md
Normal file
134
docs/db-migration-backup-docker.md
Normal file
|
|
@ -0,0 +1,134 @@
|
||||||
|
# Database backup and migration for Docker Compose installations
|
||||||
|
|
||||||
|
This guide is divided into 4 sections:
|
||||||
|
|
||||||
|
- [Checking if you have free space to make a backup](#checking-if-you-have-free-space-to-make-a-backup)
|
||||||
|
- [Deleting cached videos to reduce the size of the backup (recommended for public instances)](#deleting-cached-videos-to-reduce-the-size-of-the-backup-recommended-for-public-instances)
|
||||||
|
- [Doing a backup](#doing-a-backup)
|
||||||
|
- [Migrating your database](#migrating-your-database)
|
||||||
|
|
||||||
|
## Checking if you have free space to make a backup
|
||||||
|
|
||||||
|
Doing a backup can take large portions of your storage if you have limited
|
||||||
|
resources (like running Invidious in a VPS), therefore you should check how many
|
||||||
|
free space you have in the server you are running Invidious on.
|
||||||
|
|
||||||
|
Follow this steps to check the size of your database:
|
||||||
|
|
||||||
|
##### 1) Stop Invidious
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 2) Start the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose up invidious-db -d
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 3) Check the size of the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose exec -i invidious-db psql -U kemal -d invidious
|
||||||
|
# Write `SELECT pg_size_pretty(pg_database_size('invidious'));` into the psql interactive terminal
|
||||||
|
postgres=# SELECT pg_size_pretty(pg_database_size('invidious'));
|
||||||
|
# Exit the psql interactive terminal with the Ctrl+D keybind.
|
||||||
|
```
|
||||||
|
|
||||||
|
And you will get:
|
||||||
|
|
||||||
|
```postgres
|
||||||
|
pg_size_pretty
|
||||||
|
----------------
|
||||||
|
2 GB
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, `2 GB` is the size the database.
|
||||||
|
|
||||||
|
If you system has less free space than the value that you got, you should free
|
||||||
|
some space before making a backup.
|
||||||
|
|
||||||
|
## Deleting cached videos to reduce the size of the backup (recommended for public instances)
|
||||||
|
|
||||||
|
**You can skip this step if you have enough free space**.
|
||||||
|
|
||||||
|
Invidious caches video information so it can be later reused to display video
|
||||||
|
information, this is stored in the `videos` table and all the rows can be safely
|
||||||
|
deleted to free up some space when doing the backup.
|
||||||
|
|
||||||
|
###### 1) Stop Invidious
|
||||||
|
|
||||||
|
Go to the directory where the `docker-compose.yml` of Invidious is and use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 2) Start the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose invidious-db -d
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 3) Delete the video cache
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose exec -i invidious-db psql -U kemal -d invidious
|
||||||
|
# Write `TRUNCATE TABLE videos;` into the psql interactive terminal
|
||||||
|
$ invidious=# TRUNCATE TABLE videos;
|
||||||
|
# Exit the psql interactive terminal with the Ctrl+D keybind.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Doing a backup
|
||||||
|
|
||||||
|
After you checked if you really have free space to make a backup, let's do a
|
||||||
|
backup!
|
||||||
|
|
||||||
|
###### 1) Stop Invidious
|
||||||
|
|
||||||
|
Go to the directory where the `docker-compose.yml` of Invidious is and use:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 2) Start the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose up invidious-db -d
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 3) Backup the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose exec -i invidious-db pg_dump -U kemal invidious > dump.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
And done, if your Invidious database is big, it may take a while to finish the
|
||||||
|
`pg_dump` process.
|
||||||
|
|
||||||
|
Your backup will be saved in the current directory where the command was
|
||||||
|
executed as `dump.sql` which you can later delete if everything went fine when
|
||||||
|
migrating your database.
|
||||||
|
|
||||||
|
## Migrating your Database
|
||||||
|
|
||||||
|
###### 1) Start the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose up -d invidious-db
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 2) Migrate database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker compose run invidious sh -c "./invidious --migrate"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
And done, your Invidious instance should now be migrated to the latest database
|
||||||
|
version. If anything goes wrong, you can always restore your data reading the
|
||||||
|
[Database restore for Docker Compose installations](./db-migration-restore-docker.md)
|
||||||
|
guide.
|
||||||
121
docs/db-migration-backup-manual.md
Normal file
121
docs/db-migration-backup-manual.md
Normal file
|
|
@ -0,0 +1,121 @@
|
||||||
|
# Database backup and migration for manual installations
|
||||||
|
|
||||||
|
This guide is divided into 4 sections:
|
||||||
|
|
||||||
|
- [Checking if you have free space to make a backup](#checking-if-you-have-free-space-to-make-a-backup)
|
||||||
|
- [Deleting cached videos to reduce the size of the backup (recommended for public instances)](#deleting-cached-videos-to-reduce-the-size-of-the-backup-recommended-for-public-instances)
|
||||||
|
- [Doing a backup](#doing-a-backup)
|
||||||
|
- [Migrating your database](#migrating-your-database)
|
||||||
|
|
||||||
|
## Checking if you have free space to make a backup
|
||||||
|
|
||||||
|
Doing a backup can take large portions of your storage if you have limited
|
||||||
|
resources (like running Invidious in a VPS), therefore you should check how many
|
||||||
|
free space you have in the server you are running Invidious on.
|
||||||
|
|
||||||
|
Follow this steps to check the size of your database:
|
||||||
|
|
||||||
|
##### 1) Stop Invidious
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 2) Check the size of the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo -i -u postgres
|
||||||
|
$ psql
|
||||||
|
# Write `SELECT pg_size_pretty(pg_database_size('invidious'));`
|
||||||
|
# into the psql interactive terminal
|
||||||
|
postgres=# SELECT pg_size_pretty(pg_database_size('invidious'));
|
||||||
|
```
|
||||||
|
|
||||||
|
And you will get:
|
||||||
|
|
||||||
|
```postgres
|
||||||
|
pg_size_pretty
|
||||||
|
----------------
|
||||||
|
2 GB
|
||||||
|
```
|
||||||
|
|
||||||
|
In this example, `2 GB` is the size the database.
|
||||||
|
|
||||||
|
If you system has less free space than the value that you got, you should free
|
||||||
|
some space before making a backup.
|
||||||
|
|
||||||
|
## Deleting cached videos to reduce the size of the backup (recommended for public instances)
|
||||||
|
|
||||||
|
**You can skip this step if you have enough free space**.
|
||||||
|
|
||||||
|
Invidious caches video information so it can be later reused to display video
|
||||||
|
information, this is stored in the `videos` table and all the rows can be safely
|
||||||
|
deleted to free up some space when doing the backup.
|
||||||
|
|
||||||
|
###### 1) Stop invidious
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo systemctl stop invidious.service
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 2) Delete the video cache
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo -i -u postgres
|
||||||
|
$ psql -d invidious
|
||||||
|
# Write `TRUNCATE TABLE videos;`
|
||||||
|
# into the psql interactive terminal
|
||||||
|
invidious=# TRUNCATE TABLE videos;
|
||||||
|
# Exit the psql interactive terminal with the Ctrl+D keybind.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Doing a backup
|
||||||
|
|
||||||
|
After you checked if you really have free space to make a backup, let's do a
|
||||||
|
backup!
|
||||||
|
|
||||||
|
###### 1) Stop Invidious
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo systemctl stop invidious.service
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 2) Dump the Invidious database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo -i -u postgres
|
||||||
|
$ pg_dump invidious > dump.sql
|
||||||
|
```
|
||||||
|
|
||||||
|
And done, if your Invidious database is big, it may take a while to finish the
|
||||||
|
`pg_dump` process.
|
||||||
|
|
||||||
|
Your backup will be saved in the current directory where the command was
|
||||||
|
executed as `dump.sql` which you can later delete if everything went fine when
|
||||||
|
migrating your database.
|
||||||
|
|
||||||
|
## Migrating your Database
|
||||||
|
|
||||||
|
### Manual installation
|
||||||
|
|
||||||
|
Go to the directory where your Invidious installation is and follow this steps:
|
||||||
|
|
||||||
|
###### 1) Go to the Invidious installation folder
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ sudo su - invidious
|
||||||
|
$ cd invidious
|
||||||
|
```
|
||||||
|
|
||||||
|
###### 2) Migrate database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ ./invidious --migrate
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
And done, your Invidious instance should now be migrated to the latest database
|
||||||
|
version. If anything goes wrong, you can always restore your data reading the
|
||||||
|
[Database restore for Docker Compose installations](./db-migration-restore-docker.md)
|
||||||
|
guide.
|
||||||
18
docs/db-migration-info.md
Normal file
18
docs/db-migration-info.md
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Database migration information
|
||||||
|
|
||||||
|
When Invidious gets a new feature, sometimes it comes with database changes that
|
||||||
|
need manual intervention. Invidious comes with a `--migrate` command that does
|
||||||
|
all the migrations for you, however, migrations can go wrong.
|
||||||
|
|
||||||
|
Because of this, we recommend you to do a backup of your Invidious database before running any migrations.
|
||||||
|
|
||||||
|
We provide backup and migration instructions for:
|
||||||
|
|
||||||
|
- [Docker Compose](./db-migration-backup-docker.md): For people that installed their Invidious instance with the [Installation instructions for Docker Compose (Production)](./installation.md#docker-compose-method-production)
|
||||||
|
- [Manual installation](./db-migration-backup-manual.md): For people that installed their Invidious instance with the [Installation instructions for a manual installation](./installation.md#manual-installation)
|
||||||
|
|
||||||
|
And we also provide restore instructions for the same installations methods listed above:
|
||||||
|
|
||||||
|
- [Docker Compose](./db-migration-restore-docker.md)
|
||||||
|
- [Manual installation](./db-migration-restore-manual.md)
|
||||||
|
|
||||||
17
docs/db-migration-restore-docker.md
Normal file
17
docs/db-migration-restore-docker.md
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
# Database restore for Docker Compose installations
|
||||||
|
|
||||||
|
In case a database migration went wrong, you can use a backup of your Invidious database to recover all the data or to simply revert it to a previous state.
|
||||||
|
|
||||||
|
In order to recover your Invidious database from a backup follow the next steps:
|
||||||
|
|
||||||
|
##### 1) Stop Invidious
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose down
|
||||||
|
```
|
||||||
|
|
||||||
|
##### 2) Start the database
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker compose up invidious-db -d
|
||||||
|
```
|
||||||
1
docs/db-migration-restore-manual.md
Normal file
1
docs/db-migration-restore-manual.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
# Database restore for manual installations
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
- [Caddy reverse proxy setup](./caddy.md)
|
- [Caddy reverse proxy setup](./caddy.md)
|
||||||
- [Apache2 reverse proxy setup](./apache2.md)
|
- [Apache2 reverse proxy setup](./apache2.md)
|
||||||
- [Database maintenance](./db-maintenance.md)
|
- [Database maintenance](./db-maintenance.md)
|
||||||
|
- [Database migration](./db-migration-info.md)
|
||||||
- [CAPTCHA bug on Debian and Ubuntu](./captcha-bug.md)
|
- [CAPTCHA bug on Debian and Ubuntu](./captcha-bug.md)
|
||||||
- [Registering users manually](./register-user.md)
|
- [Registering users manually](./register-user.md)
|
||||||
- [Reset user password](./reset-password.md)
|
- [Reset user password](./reset-password.md)
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,12 @@ nav:
|
||||||
- 'caddy.md'
|
- 'caddy.md'
|
||||||
- 'apache2.md'
|
- 'apache2.md'
|
||||||
- 'db-maintenance.md'
|
- 'db-maintenance.md'
|
||||||
|
- 'Database Migration':
|
||||||
|
- 'db-migration-info.md'
|
||||||
|
- 'db-migration-backup-docker.md'
|
||||||
|
- 'db-migration-backup-manual.md'
|
||||||
|
- 'db-migration-restore-docker.md'
|
||||||
|
- 'db-migration-restore-manual.md'
|
||||||
- 'captcha-bug.md'
|
- 'captcha-bug.md'
|
||||||
- 'register-user.md'
|
- 'register-user.md'
|
||||||
- 'reset-password.md'
|
- 'reset-password.md'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue