blob: 49ab6ef7f00198005c9a8f236a488cebbb7ad0fb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# firefly-update
Update a [Firefly III](https://www.firefly-iii.org/) instance on Debian.
Installs the latest (or a pinned) release via Composer, carries over your
`.env`, uploads, exports, and SQLite database, runs the migrations and
upgrade steps, then swaps the new version in and restarts Apache. A
timestamped database backup is taken before anything is touched, and
`--restore` rolls back to the previous version.
## Usage
Run as root (it chowns files and restarts Apache):
```bash
sudo ./firefly-update # update to latest release
sudo ./firefly-update -v 6.1.0 # update to a specific tag
sudo ./firefly-update --restore # roll back to the previous version
sudo ./firefly-update --help
```
### Configuration
Override with environment variables:
| Variable | Default | Meaning |
|-------------|---------------------------|--------------------------------------------|
| `WORKDIR` | `/var/www` | Directory holding the instance |
| `INSTANCE` | `piggy` | Instance directory name under `$WORKDIR` |
| `BACKUPDIR` | `$WORKDIR/firefly-backups`| Where timestamped DB backups are written |
```bash
WORKDIR=/srv INSTANCE=ff sudo -E ./firefly-update
```
## Notes
- Assumes an SQLite database at `storage/database/database.sqlite`.
- `set -euo pipefail`: any failed step aborts before the live instance is
swapped, so a broken build never replaces a working one.
- The previous version is kept at `$INSTANCE-old` until the next run.
## License
GPLv2-only. See [LICENSE](LICENSE).
Copyright (C) 2026 Danilo M. <danix@danix.xyz>
|