Compare commits

...

486 Commits

Author SHA1 Message Date
LinuxServer-CI
d37b904fb3
Bot Updating Package Versions 2026-02-18 20:03:53 +00:00
Adam
4ea84e9203
Merge pull request #284 from linuxserver/purifier
Add purifier directory to framework symlinks
2026-02-17 17:57:29 +00:00
thespad
4024093611
Add purifier directory to framework symlinks 2026-02-17 17:08:23 +00:00
LinuxServer-CI
08e43edecf
Bot Updating Package Versions 2026-02-17 11:58:52 +00:00
LinuxServer-CI
14da2a0df5
Bot Updating Package Versions 2026-02-16 18:56:11 +00:00
LinuxServer-CI
9d396ec6a2
Bot Updating Templated Files 2026-02-16 18:52:39 +00:00
LinuxServer-CI
f903ab685d
Bot Updating Templated Files 2026-02-16 18:51:03 +00:00
LinuxServer-CI
6bf9340d89
Bot Updating Package Versions 2026-02-09 19:22:11 +00:00
LinuxServer-CI
37c2e6072d
Bot Updating Package Versions 2026-01-29 15:58:10 +00:00
LinuxServer-CI
6d24518f15
Bot Updating Package Versions 2026-01-24 14:42:11 +00:00
LinuxServer-CI
c36bdfb04a
Bot Updating Package Versions 2026-01-12 18:40:02 +00:00
Adam
4f99d38bcb
Merge pull request #278 from pfeyz/patch-1 2026-01-04 23:45:47 +00:00
LinuxServer-CI
c25a48d2b8
Bot Updating Package Versions 2026-01-04 21:23:57 +00:00
LinuxServer-CI
44463da08f
Bot Updating Templated Files 2026-01-04 21:18:25 +00:00
Adam
31a47a879e
Merge pull request #281 from linuxserver/3.23 2026-01-04 21:16:28 +00:00
LinuxServer-CI
c5d0fd7694
Bot Updating Package Versions 2025-12-30 17:42:20 +00:00
thespad
ca7fcb276f
opcache is now builtin 2025-12-28 17:09:44 +00:00
thespad
2904fa92fb
Rebase to 3.23 2025-12-28 17:06:20 +00:00
LinuxServer-CI
f68b027a14
Bot Updating Package Versions 2025-12-24 13:07:22 +00:00
LinuxServer-CI
6bc3180f53
Bot Updating Package Versions 2025-12-22 18:48:21 +00:00
LinuxServer-CI
e9a445379a
Bot Updating Package Versions 2025-12-22 18:43:45 +00:00
LinuxServer-CI
5642cc2080
Bot Updating Package Versions 2025-12-22 18:38:45 +00:00
LinuxServer-CI
3dfc0bda5a
Bot Updating Package Versions 2025-12-15 18:39:11 +00:00
LinuxServer-CI
08370f159d
Bot Updating Package Versions 2025-12-09 21:39:07 +00:00
LinuxServer-CI
dd118d1b46
Bot Updating Package Versions 2025-12-08 18:38:29 +00:00
pfeyz
11152fe266
don't embed ansi escape codes in appkey
given that it's the recommended way to generate the code in the docs, redirecting stdout will produce an appkey that will make bookstack crash when it runs. this will affect anyone who is trying to automate the initial steps of deployment.

i think this is likely the cause of this issue: https://github.com/BookStackApp/BookStack/issues/5289#issuecomment-2453680653
2025-12-06 19:40:32 -05:00
LinuxServer-CI
18bdc16361
Bot Updating Package Versions 2025-12-03 15:44:33 +00:00
LinuxServer-CI
0812ae08e5
Bot Updating Package Versions 2025-12-01 18:40:23 +00:00
LinuxServer-CI
bf431f8f0c
Bot Updating Package Versions 2025-11-25 22:40:41 +00:00
LinuxServer-CI
08a396d042
Bot Updating Package Versions 2025-11-21 14:46:20 +00:00
LinuxServer-CI
eb557cf2a1
Bot Updating Package Versions 2025-11-19 15:39:34 +00:00
LinuxServer-CI
07caa96fee
Bot Updating Templated Files 2025-11-19 15:35:57 +00:00
LinuxServer-CI
be89b0b7aa
Bot Updating Package Versions 2025-11-17 18:34:51 +00:00
LinuxServer-CI
91858f20e9
Bot Updating Package Versions 2025-11-09 13:37:46 +00:00
LinuxServer-CI
f560b74187
Bot Updating Package Versions 2025-10-27 18:36:33 +00:00
LinuxServer-CI
6c4839dfbb
Bot Updating Templated Files 2025-10-27 18:33:13 +00:00
LinuxServer-CI
a4e1054769
Bot Updating Package Versions 2025-10-20 18:37:39 +00:00
LinuxServer-CI
af1bd1bc0e
Bot Updating Templated Files 2025-10-20 18:33:46 +00:00
LinuxServer-CI
091265234d
Bot Updating Package Versions 2025-10-13 18:32:28 +00:00
LinuxServer-CI
57d1d906e3
Bot Updating Package Versions 2025-10-05 15:32:58 +00:00
LinuxServer-CI
f165d5927e
Bot Updating Package Versions 2025-09-29 18:34:25 +00:00
LinuxServer-CI
7834e6be98
Bot Updating Package Versions 2025-09-22 18:32:41 +00:00
LinuxServer-CI
6a6031e70e
Bot Updating Package Versions 2025-08-28 17:37:27 +00:00
LinuxServer-CI
9509dbaa1f
Bot Updating Package Versions 2025-08-25 18:34:56 +00:00
LinuxServer-CI
9fdf1f8e9b
Bot Updating Package Versions 2025-08-18 18:36:53 +00:00
LinuxServer-CI
79e220fe9c
Bot Updating Package Versions 2025-08-11 14:46:42 +00:00
LinuxServer-CI
21c371b198
Bot Updating Package Versions 2025-08-04 18:38:45 +00:00
LinuxServer-CI
f0cdf284eb
Bot Updating Package Versions 2025-07-30 09:54:50 +00:00
LinuxServer-CI
963a439956
Bot Updating Package Versions 2025-07-28 18:39:14 +00:00
LinuxServer-CI
16e0d78dbb
Bot Updating Package Versions 2025-07-15 08:41:12 +00:00
LinuxServer-CI
2d4c63e977
Bot Updating Templated Files 2025-07-15 08:37:56 +00:00
Adam
7a44242a13
Merge pull request #274 from linuxserver/3.22 2025-07-15 09:36:25 +01:00
LinuxServer-CI
fe9a7feb9e
Bot Updating Package Versions 2025-07-14 18:37:50 +00:00
thespad
36f1de6449
Fix || breaking build failures 2025-07-10 19:40:39 +01:00
LinuxServer-CI
0dd8ae9069
Bot Updating Package Versions 2025-07-07 14:47:18 +00:00
LinuxServer-CI
225e05f493
Bot Updating Templated Files 2025-07-07 14:43:47 +00:00
LinuxServer-CI
c422f29971
Bot Updating Templated Files 2025-07-07 14:42:09 +00:00
thespad
001da31552
Rebase to 3.22 2025-07-05 15:26:54 +01:00
LinuxServer-CI
3173d606ef
Bot Updating Package Versions 2025-06-17 14:44:54 +00:00
LinuxServer-CI
e3d106d070
Bot Updating Templated Files 2025-06-16 18:33:01 +00:00
LinuxServer-CI
92ab5632ed
Bot Updating Package Versions 2025-05-31 13:44:53 +00:00
LinuxServer-CI
4cb2d86fd3
Bot Updating Package Versions 2025-05-26 18:33:36 +00:00
LinuxServer-CI
336d5ba3f7
Bot Updating Package Versions 2025-05-17 11:31:42 +00:00
LinuxServer-CI
9c2b40c914
Bot Updating Templated Files 2025-05-17 11:28:57 +00:00
LinuxServer-CI
481bdb6a8b
Bot Updating Package Versions 2025-05-08 15:41:50 +00:00
LinuxServer-CI
5eb50e7294
Bot Updating Package Versions 2025-05-05 18:30:18 +00:00
LinuxServer-CI
f92adde813
Bot Updating Package Versions 2025-04-21 18:31:56 +00:00
LinuxServer-CI
aab1799cae
Bot Updating Package Versions 2025-04-14 18:32:19 +00:00
LinuxServer-CI
bee364899e
Bot Updating Package Versions 2025-04-07 18:31:37 +00:00
LinuxServer-CI
4c90655485
Bot Updating Package Versions 2025-04-02 16:48:13 +00:00
LinuxServer-CI
0c1bdf7b07
Bot Updating Package Versions 2025-03-31 18:31:29 +00:00
LinuxServer-CI
6006704576
Bot Updating Package Versions 2025-03-17 18:30:33 +00:00
LinuxServer-CI
cb76bd3838
Bot Updating Package Versions 2025-03-16 12:55:56 +00:00
LinuxServer-CI
c833bc46c2
Bot Updating Package Versions 2025-03-09 13:52:08 +00:00
Adam
6bda8c360a
Merge pull request #266 from linuxserver/backup-symlink
Fix backup symlink
2025-03-09 13:49:05 +00:00
thespad
06da7f0e0b
Fix backup symlink 2025-03-08 20:23:21 +00:00
LinuxServer-CI
80ee30e747
Bot Updating Package Versions 2025-02-26 15:37:51 +00:00
LinuxServer-CI
feb8032b97
Bot Updating Package Versions 2025-02-24 18:31:54 +00:00
LinuxServer-CI
9e330f4396
Bot Updating Package Versions 2025-02-17 18:28:26 +00:00
LinuxServer-CI
167e0a0cf2
Bot Updating Templated Files 2025-02-10 18:27:36 +00:00
LinuxServer-CI
4c041344f8
Bot Updating Templated Files 2025-02-03 18:29:33 +00:00
LinuxServer-CI
30ec902a3a
Bot Updating Templated Files 2025-02-03 18:28:39 +00:00
LinuxServer-CI
a31d51a1cd
Bot Updating Package Versions 2025-01-22 00:20:52 +00:00
quietsy
63ab103e8b
Merge pull request #259 from linuxserver/add-project-categories
Add categories to readme-vars.yml
2025-01-21 04:42:07 +02:00
LinuxServer-CI
dcb27aab58
Bot Updating Package Versions 2025-01-20 18:27:33 +00:00
quietsy
ef5d337e4d Add categories to readme-vars.yml 2025-01-20 17:21:03 +02:00
LinuxServer-CI
9be39e5c49
Bot Updating Package Versions 2025-01-15 14:00:27 +00:00
Adam
44544d05ee
Merge pull request #258 from linuxserver/sessions 2025-01-15 13:57:02 +00:00
thespad
17961c4c24
Only clear cache, sessions, views on container update 2025-01-15 10:04:46 +00:00
LinuxServer-CI
4efb651e21
Bot Updating Package Versions 2025-01-05 10:10:52 +00:00
LinuxServer-CI
29778a5321
Bot Updating Templated Files 2025-01-05 10:06:14 +00:00
Adam
3236a68411
Merge pull request #254 from linuxserver/opcache 2025-01-05 10:04:57 +00:00
LinuxServer-CI
32a45a9d61
Bot Updating Package Versions 2025-01-04 23:31:05 +00:00
thespad
72f406373b
Add php83-opcache 2025-01-04 22:28:25 +00:00
LinuxServer-CI
c705a81c1c
Bot Updating Package Versions 2024-12-23 12:56:46 +00:00
Adam
244c619c77
Merge pull request #248 from linuxserver/master-fix-keygen 2024-12-22 22:22:11 +00:00
thespad
d283e53018
Fix appkey gen with new symlinks 2024-12-22 21:59:37 +00:00
LinuxServer-CI
ee61205ece
Bot Updating Package Versions 2024-12-21 13:34:54 +00:00
LinuxServer-CI
15af885805
Bot Updating Templated Files 2024-12-21 13:31:47 +00:00
Adam
fb50f788b2
Merge pull request #247 from linuxserver/3.21 2024-12-21 13:30:14 +00:00
thespad
5fd60b393b
Improve symlink creation 2024-12-18 15:45:06 +00:00
thespad
fdf34906e5
Use /tmp as we need it anyway 2024-12-17 17:58:35 +00:00
thespad
476e0463b1
Rebase to 3.21, support read-only operation 2024-12-17 17:55:20 +00:00
LinuxServer-CI
9a88ade8e1
Bot Updating Package Versions 2024-12-16 18:38:51 +00:00
LinuxServer-CI
10aca3f421
Bot Updating Templated Files 2024-12-16 18:32:26 +00:00
LinuxServer-CI
15092cd768
Bot Updating Templated Files 2024-12-16 18:29:47 +00:00
LinuxServer-CI
b704ebdd25
Bot Updating Templated Files 2024-12-09 18:30:53 +00:00
LinuxServer-CI
b52e28a1a2
Bot Updating Templated Files 2024-12-02 18:34:35 +00:00
LinuxServer-CI
3955a5ceab
Bot Updating Templated Files 2024-12-02 18:31:56 +00:00
LinuxServer-CI
85e3b1a0a5
Bot Updating Templated Files 2024-12-02 18:30:44 +00:00
LinuxServer-CI
a96801f392
Bot Updating Templated Files 2024-12-02 18:29:18 +00:00
LinuxServer-CI
f719a0c2f5
Bot Updating Package Versions 2024-11-29 14:38:43 +00:00
LinuxServer-CI
241c57b7f9
Bot Updating Package Versions 2024-11-25 18:28:59 +00:00
Adam
5f0dbc08f7
Merge pull request #242 from linuxserver/be-unambiguous 2024-11-20 20:43:50 +00:00
thespad
04589bb8ae
Attempt to remove any and all ambiguity from the readme instructions. 2024-11-20 20:31:19 +00:00
LinuxServer-CI
47165fc43d
Bot Updating Package Versions 2024-11-13 12:57:23 +00:00
LinuxServer-CI
a9d2ee5a88
Bot Updating Templated Files 2024-11-11 18:27:36 +00:00
LinuxServer-CI
0bdb37bf4f
Bot Updating Templated Files 2024-11-11 18:26:36 +00:00
LinuxServer-CI
b8fba7f08b
Bot Updating Package Versions 2024-11-08 15:04:57 +00:00
LinuxServer-CI
00a782d8ae
Bot Updating Package Versions 2024-11-04 18:29:11 +00:00
LinuxServer-CI
c7819efba7
Bot Updating Package Versions 2024-10-28 18:30:00 +00:00
LinuxServer-CI
1eb8aa7e86
Bot Updating Package Versions 2024-10-21 18:28:43 +00:00
Adam
5a58d58419
Merge pull request #234 from linuxserver/fix-appkey 2024-10-14 16:21:36 +01:00
thespad
c84517086c
Fix appkey check + add helper 2024-10-14 16:12:46 +01:00
Adam
2c3eb82848
Merge pull request #231 from linuxserver/env-consolidation 2024-10-14 09:13:03 +01:00
thespad
be960b455b
Add update-url note to readme 2024-10-14 09:07:27 +01:00
thespad
448b16865f
Fix unhelpful default values 2024-10-12 20:19:24 +01:00
thespad
4cb4610150
Simplify init, prefer envs, make fewer assumptions 2024-10-12 19:28:51 +01:00
LinuxServer-CI
e32e3ce745
Bot Updating Package Versions 2024-10-09 10:42:32 +00:00
LinuxServer-CI
23e32dc35e
Bot Updating Package Versions 2024-09-30 18:33:03 +00:00
LinuxServer-CI
1ecb3fb7a2
Bot Updating Templated Files 2024-09-30 18:30:03 +00:00
LinuxServer-CI
bd625285f7
Bot Updating Templated Files 2024-09-30 18:28:48 +00:00
LinuxServer-CI
ef194d4e9c
Bot Updating Templated Files 2024-09-30 18:27:18 +00:00
LinuxServer-CI
c42dd81847
Bot Updating Package Versions 2024-09-23 18:27:58 +00:00
LinuxServer-CI
9e5e0c3fbb
Bot Updating Package Versions 2024-09-16 18:28:54 +00:00
LinuxServer-CI
d4a11792b7
Bot Updating Package Versions 2024-09-06 15:21:51 +00:00
LinuxServer-CI
2fa72de4df
Bot Updating Templated Files 2024-09-06 15:18:59 +00:00
LinuxServer-CI
fc8f5ee61f
Bot Updating Templated Files 2024-09-06 15:16:49 +00:00
Adam
6a43dbf24f
Merge pull request #224 from linuxserver/php-exif 2024-09-06 16:15:22 +01:00
thespad
248b8769b4
Add php83-exif for reading image EXIF data 2024-09-06 16:03:32 +01:00
LinuxServer-CI
9c224f5eb5
Bot Updating Package Versions 2024-08-29 15:36:53 +00:00
LinuxServer-CI
dfc1d3192f
Bot Updating Package Versions 2024-08-26 18:25:50 +00:00
LinuxServer-CI
951399bd49
Bot Updating Package Versions 2024-08-19 18:30:42 +00:00
LinuxServer-CI
e682e1aaa1
Bot Updating Templated Files 2024-08-19 18:26:56 +00:00
LinuxServer-CI
80de27102c Bot Updating Templated Files 2024-08-19 18:24:50 +00:00
Adam
6790cfae23
Merge pull request #221 from linuxserver/migrations-x 2024-08-13 16:17:52 +01:00
thespad
8b6b85d1a3
Make migrations executable 2024-08-13 15:15:45 +01:00
LinuxServer-CI
c8ffa209f1 Bot Updating Package Versions 2024-08-12 18:27:12 +00:00
LinuxServer-CI
c6b23e665f Bot Updating Package Versions 2024-08-05 18:26:40 +00:00
LinuxServer-CI
25f8bddc4e Bot Updating Package Versions 2024-07-29 18:27:13 +00:00
LinuxServer-CI
c17a8d6dbd Bot Updating Package Versions 2024-07-19 21:37:25 +00:00
Eric Nemchik
7745e1c0d7
Merge pull request #218 from linuxserver/delete-default-conf
Delete root/defaults/nginx/site-confs/default.conf.sample
2024-07-19 16:33:49 -05:00
Eric Nemchik
1c26d28291
Delete root/defaults/nginx/site-confs/default.conf.sample
redundant to base
2024-07-16 20:44:27 -05:00
LinuxServer-CI
f7b4f2442e Bot Updating Package Versions 2024-07-14 16:54:28 +00:00
LinuxServer-CI
ac8cb7a796 Bot Updating Templated Files 2024-07-14 16:51:04 +00:00
LinuxServer-CI
76bc27286e Bot Updating Templated Files 2024-07-14 16:49:26 +00:00
LinuxServer-CI
c4732bf86a Bot Updating Package Versions 2024-07-08 18:26:18 +00:00
LinuxServer-CI
83ce5bd30b Bot Updating Package Versions 2024-07-01 18:27:15 +00:00
LinuxServer-CI
82e27df972 Bot Updating Package Versions 2024-06-17 18:25:01 +00:00
LinuxServer-CI
9458f760ca Bot Updating Package Versions 2024-06-10 11:28:59 +00:00
LinuxServer-CI
721ace2bca Bot Updating Package Versions 2024-06-01 20:34:56 +00:00
Adam
66bb63ab5c
Merge pull request #215 from linuxserver/readme-tidy
Tidy readme
2024-06-01 21:30:44 +01:00
thespad
8f7e4da277
Tidy readme 2024-06-01 17:48:04 +01:00
LinuxServer-CI
69d9fd1452 Bot Updating Package Versions 2024-05-29 13:56:47 +00:00
LinuxServer-CI
b1e2b2ee4f Bot Updating Templated Files 2024-05-29 13:54:01 +00:00
Adam
aa40100bb2
Merge pull request #213 from linuxserver/3.20
Rebase to 3.20
2024-05-29 14:52:40 +01:00
thespad
223740182f
Use wildcard listener 2024-05-29 13:58:02 +01:00
thespad
1078bd4dfb
Update http2 wording 2024-05-28 20:11:12 +01:00
thespad
40fdb1058e
Rebase to 3.20 2024-05-28 20:01:03 +01:00
LinuxServer-CI
0e6c35ab2d Bot Updating Package Versions 2024-05-27 18:23:23 +00:00
LinuxServer-CI
51d49e40ba Bot Updating Package Versions 2024-05-21 10:55:30 +00:00
LinuxServer-CI
0c4f018f41 Bot Updating Templated Files 2024-05-21 10:52:26 +00:00
LinuxServer-CI
9aeff1a1d0 Bot Updating Templated Files 2024-05-21 10:50:51 +00:00
LinuxServer-CI
0836983544 Bot Updating Templated Files 2024-05-21 10:49:09 +00:00
LinuxServer-CI
e78d02587b Bot Updating Package Versions 2024-05-20 18:23:49 +00:00
LinuxServer-CI
072e39ee06 Bot Updating Package Versions 2024-05-13 18:23:07 +00:00
LinuxServer-CI
e03366e936 Bot Updating Package Versions 2024-05-11 15:31:12 +00:00
LinuxServer-CI
bd9f41e793 Bot Updating Templated Files 2024-05-11 15:28:25 +00:00
LinuxServer-CI
4864ce1d1e Bot Updating Templated Files 2024-05-06 18:24:36 +00:00
LinuxServer-CI
93878ef585 Bot Updating Package Versions 2024-04-29 18:22:17 +00:00
LinuxServer-CI
263fc81952 Bot Updating Package Versions 2024-04-22 18:23:05 +00:00
LinuxServer-CI
8fddd56c0c Bot Updating Package Versions 2024-04-15 18:23:15 +00:00
LinuxServer-CI
efa77507f3 Bot Updating Package Versions 2024-04-05 14:34:15 +00:00
LinuxServer-CI
248b7be397 Bot Updating Package Versions 2024-04-01 18:21:02 +00:00
LinuxServer-CI
ef62a56bab Bot Updating Package Versions 2024-03-25 18:24:37 +00:00
LinuxServer-CI
b24b21f21c Bot Updating Package Versions 2024-03-18 18:23:08 +00:00
LinuxServer-CI
ef1f4e2139 Bot Updating Templated Files 2024-03-18 18:20:07 +00:00
LinuxServer-CI
22289ce96f Bot Updating Package Versions 2024-03-04 18:20:31 +00:00
LinuxServer-CI
4e1861dc95 Bot Updating Package Versions 2024-02-28 14:31:22 +00:00
LinuxServer-CI
63d71fde37 Bot Updating Package Versions 2024-02-26 12:48:11 +00:00
LinuxServer-CI
580623db9d Bot Updating Templated Files 2024-02-26 12:45:04 +00:00
LinuxServer-CI
4d41ca9239 Bot Updating Templated Files 2024-02-26 12:43:20 +00:00
LinuxServer-CI
15127d9e4c Bot Updating Package Versions 2024-02-19 18:24:23 +00:00
LinuxServer-CI
ffd2adc9dd Bot Updating Package Versions 2024-02-12 18:20:17 +00:00
LinuxServer-CI
a22f015ceb Bot Updating Package Versions 2024-02-05 18:22:46 +00:00
LinuxServer-CI
dc638a54d8 Bot Updating Package Versions 2024-01-29 18:21:02 +00:00
LinuxServer-CI
6a1308143b Bot Updating Templated Files 2024-01-25 18:50:49 +00:00
Eric Nemchik
3d1656966a
Merge pull request #201 from linuxserver/nginx-cleanup
Cleanup default site conf
2024-01-25 12:45:45 -06:00
Eric Nemchik
0de4fc064f
Merge branch 'master' into nginx-cleanup 2024-01-25 12:45:40 -06:00
LinuxServer-CI
a2089be82d Bot Updating Package Versions 2024-01-24 11:30:55 +00:00
LinuxServer-CI
8386f7a90b Bot Updating Package Versions 2024-01-22 18:23:20 +00:00
LinuxServer-CI
9f99c7fef9 Bot Updating Package Versions 2024-01-15 18:26:43 +00:00
LinuxServer-CI
c86c8298a6 Bot Updating Templated Files 2024-01-15 18:22:59 +00:00
LinuxServer-CI
755270f475 Bot Updating Templated Files 2024-01-15 18:21:12 +00:00
LinuxServer-CI
e1e6dd2a30 Bot Updating Package Versions 2024-01-08 18:22:31 +00:00
LinuxServer-CI
cc18bc0f84 Bot Updating Package Versions 2023-12-29 12:48:05 +00:00
LinuxServer-CI
de6b81a975 Bot Updating Package Versions 2023-12-28 18:34:11 +00:00
LinuxServer-CI
72b2f7dacb Bot Updating Templated Files 2023-12-28 18:29:25 +00:00
Eric Nemchik
bcf329ba07
Merge pull request #200 from linuxserver/3.19
Rebase to Alpine 3.19
2023-12-28 12:27:57 -06:00
Eric Nemchik
4f569dfdf8
Cleanup default site conf
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-25 14:16:11 -06:00
LinuxServer-CI
92901fa2a3 Bot Updating Package Versions 2023-12-25 18:21:56 +00:00
Eric Nemchik
ba22acfa48
Rebase to Alpine 3.19
Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-12-23 18:08:37 -06:00
LinuxServer-CI
ca614519d4 Bot Updating Package Versions 2023-12-11 18:23:46 +00:00
LinuxServer-CI
1a0feb718c Bot Updating Package Versions 2023-12-04 18:23:33 +00:00
LinuxServer-CI
c645e46843 Bot Updating Package Versions 2023-11-27 18:22:06 +00:00
Eric Nemchik
976de47cd0
Merge pull request #197 from linuxserver/quiet-migration
only run migration if conf exists
2023-11-25 18:12:51 -06:00
Eric Nemchik
a6801f27f0
only run migration if conf exists
redirect stderr to /dev/null

Signed-off-by: Eric Nemchik <eric@nemchik.com>
2023-11-25 10:42:40 -06:00
LinuxServer-CI
152f64b6f9 Bot Updating Package Versions 2023-11-25 12:18:06 +00:00
Adam
586c3d8751
Merge pull request #196 from linuxserver/init-fix
Symlink all logs to avoid defer error on new install
2023-11-25 12:15:15 +00:00
TheSpad
78d685a31f
Symlink logs and backups outside of www 2023-11-24 14:11:04 +00:00
TheSpad
7759d52c25
Symlink all logs to avoid defer error on new install 2023-11-24 13:54:02 +00:00
LinuxServer-CI
acda76ad08 Bot Updating Package Versions 2023-11-17 15:56:12 +00:00
LinuxServer-CI
40ee80c5d8 Bot Updating Templated Files 2023-11-17 15:53:15 +00:00
aptalca
28b6c968f2
Merge pull request #195 from linuxserver/sedescape
further sanitize sed replace
2023-11-17 10:51:41 -05:00
LinuxServer-CI
99e2bec1bc Bot Updating Package Versions 2023-11-13 18:21:49 +00:00
LinuxServer-CI
b9909c9323 Bot Updating Package Versions 2023-11-02 15:29:16 +00:00
aptalca
e0f1e7cf13
further sanitize sed replace 2023-10-31 17:35:24 -04:00
LinuxServer-CI
0da4f3e270 Bot Updating Package Versions 2023-10-30 12:47:46 +00:00
LinuxServer-CI
833d57cfed Bot Updating Package Versions 2023-10-23 18:21:00 +00:00
LinuxServer-CI
9a4494667a Bot Updating Package Versions 2023-10-16 18:24:42 +00:00
LinuxServer-CI
0b32a2a4c3 Bot Updating Package Versions 2023-10-09 18:26:31 +00:00
LinuxServer-CI
7a787f9c5b Bot Updating Templated Files 2023-10-09 18:22:41 +00:00
LinuxServer-CI
32c7e152fa Bot Updating Templated Files 2023-10-09 18:21:05 +00:00
LinuxServer-CI
4f7bd3761e Bot Updating Package Versions 2023-10-02 18:21:57 +00:00
LinuxServer-CI
a62a72c757 Bot Updating Package Versions 2023-09-25 18:22:15 +00:00
LinuxServer-CI
cf00b4b528 Bot Updating Package Versions 2023-09-15 13:30:57 +00:00
LinuxServer-CI
0e1f787d64 Bot Updating Package Versions 2023-09-11 18:21:19 +00:00
LinuxServer-CI
48590fc969 Bot Updating Templated Files 2023-09-04 11:03:26 +00:00
Adam
b979032c09
Merge pull request #187 from linuxserver/queues 2023-09-04 12:01:45 +01:00
TheSpad
7245559a00
Add link for async actions 2023-09-04 09:25:52 +01:00
TheSpad
869d618156
Add async action support 2023-09-04 09:22:10 +01:00
LinuxServer-CI
e3bcaad822 Bot Updating Package Versions 2023-09-03 17:32:40 +00:00
LinuxServer-CI
3ee35b4d79 Bot Updating Package Versions 2023-08-30 12:48:59 +00:00
LinuxServer-CI
1f7441a512 Bot Updating Package Versions 2023-08-28 18:22:14 +00:00
LinuxServer-CI
620c519455 Bot Updating Package Versions 2023-08-21 18:20:01 +00:00
LinuxServer-CI
e06fd86bc1 Bot Updating Package Versions 2023-08-14 18:30:13 +00:00
LinuxServer-CI
c0042bd7c6 Bot Updating Package Versions 2023-08-14 18:26:24 +00:00
LinuxServer-CI
6b7063dbbd Bot Updating Package Versions 2023-08-14 18:22:44 +00:00
LinuxServer-CI
8cba53dfe8 Bot Updating Package Versions 2023-08-14 18:19:52 +00:00
LinuxServer-CI
a8c6d4b653 Bot Updating Package Versions 2023-08-11 00:05:38 +00:00
LinuxServer-CI
9f149726fd Bot Updating Templated Files 2023-08-11 00:02:00 +00:00
Eric Nemchik
0f7b665962
Merge pull request #183 from jasonyang-ee/master
Update password restriction matching to db image manual
2023-08-10 18:59:39 -05:00
LinuxServer-CI
fd52002a3d Bot Updating Package Versions 2023-08-07 18:21:10 +00:00
Jason Teng
51c954c18b
Edit: moving change to readme-vars.yml 2023-08-06 23:32:53 -07:00
Jason Teng
bb3a6b4f05
Revert "Add: password restriction match to db image manual"
This reverts commit b270eaf8a27a2f3b96710498c1b005e97de577b0.
2023-08-06 23:30:33 -07:00
Jason Teng
b270eaf8a2
Add: password restriction match to db image manual
per linuxserver/mariadb/, the required DATABASE_PASSWORD must > 4
2023-08-06 23:11:03 -07:00
LinuxServer-CI
e654f6ca12 Bot Updating Package Versions 2023-07-31 18:22:24 +00:00
LinuxServer-CI
078e1512ed Bot Updating Package Versions 2023-07-24 18:22:42 +00:00
LinuxServer-CI
54488670f1 Bot Updating Package Versions 2023-07-17 18:25:56 +00:00
LinuxServer-CI
914301a9ea Bot Updating Package Versions 2023-07-11 13:20:42 +00:00
Adam
2e802e7231
Merge pull request #179 from linuxserver/drizuid-patch-1 2023-07-11 14:16:45 +01:00
LinuxServer-CI
70c02cc704 Bot Updating Package Versions 2023-07-10 18:23:30 +00:00
driz
edd48f8708
Update readme-vars.yml 2023-07-06 08:48:42 -04:00
driz
01114edaa3
remove wkhtmltopdf section of readme 2023-07-06 08:47:30 -04:00
LinuxServer-CI
8cacf766f6 Bot Updating Package Versions 2023-07-05 13:00:40 +00:00
LinuxServer-CI
cbeae026d4 Bot Updating Package Versions 2023-07-03 18:24:49 +00:00
LinuxServer-CI
9fad9dc45b Bot Updating Templated Files 2023-07-03 18:22:00 +00:00
LinuxServer-CI
f56f469718 Bot Updating Package Versions 2023-06-30 10:36:41 +00:00
LinuxServer-CI
bf799eede6 Bot Updating Package Versions 2023-06-26 18:23:35 +00:00
LinuxServer-CI
e5dd5dc0a1 Bot Updating Package Versions 2023-06-19 18:21:08 +00:00
LinuxServer-CI
7689b64cf2 Bot Updating Package Versions 2023-06-12 18:22:24 +00:00
LinuxServer-CI
b4f199a7c5 Bot Updating Package Versions 2023-06-09 12:47:10 +00:00
Adam
d164f1b1b9
Merge pull request #173 from ssddanbrown/system-cli-support 2023-06-09 13:44:02 +01:00
Adam
122d120429
Merge branch 'master' into system-cli-support 2023-06-07 13:43:43 +01:00
TheSpad
eb7bd9a626
Rebase against current master branch 2023-06-07 13:39:51 +01:00
LinuxServer-CI
d5a2d9e57c Bot Updating Package Versions 2023-06-05 18:21:35 +00:00
LinuxServer-CI
40692d2a9f Bot Updating Package Versions 2023-05-30 13:58:16 +00:00
Eric Nemchik
00fd09c227
Merge pull request #174 from linuxserver/3.18
Rebase to Alpine 3.18, deprecate armhf
2023-05-30 08:55:43 -05:00
LinuxServer-CI
769680eff8 Bot Updating Package Versions 2023-05-29 18:20:05 +00:00
Eric Nemchik
f6fc0ac4b0
Rebase to Alpine 3.18, deprecate armhf 2023-05-27 16:44:03 -05:00
LinuxServer-CI
ff037f40a1 Bot Updating Package Versions 2023-05-23 12:37:43 +00:00
LinuxServer-CI
5b2e8ecaa0 Bot Updating Templated Files 2023-05-23 12:33:25 +00:00
LinuxServer-CI
19cd312acb Bot Updating Templated Files 2023-05-23 12:31:54 +00:00
Adam
b00371e1bc
Merge pull request #171 from ssddanbrown/compose-changes 2023-05-23 13:30:19 +01:00
Dan Brown
5911614cd7
Updated changelog date for cli support 2023-05-23 13:28:21 +01:00
Dan Brown
00ff6d8366
Updated volume binds to include bookstack name
As requested in https://github.com/linuxserver/docker-bookstack/pull/171#issuecomment-1546728941
2023-05-23 12:55:59 +01:00
LinuxServer-CI
d94b7abffa Bot Updating Package Versions 2023-05-15 18:21:55 +00:00
Dan Brown
e79965fd5f
Updated additional dockerfiles with cli support
Also reordered packages in dockerfile to be alphabetical.
2023-05-08 19:01:05 +01:00
Dan Brown
f2c4a7f002
Updated example volume paths and url options
With an aim to prevent issues when people leave them as the defaults.
2023-05-08 18:41:37 +01:00
Dan Brown
ba204db5e6
Updated changelog and readme mapping for system-cli changes 2023-05-08 18:29:40 +01:00
LinuxServer-CI
43a36901b7 Bot Updating Package Versions 2023-05-08 15:29:11 +00:00
Dan Brown
607fecb0bf
Added requirements for bookstack-system-cli
Added required ZIP extension and mariadb-client package to provide
mysqldump which is required by the CLI for backing up.
2023-05-06 02:20:57 +01:00
LinuxServer-CI
d29c2f1f55 Bot Updating Package Versions 2023-05-03 10:32:56 +00:00
LinuxServer-CI
596d6d9205 Bot Updating Package Versions 2023-05-01 13:25:12 -05:00
LinuxServer-CI
275950c67b Bot Updating Templated Files 2023-05-01 18:20:35 +00:00
LinuxServer-CI
1fad6afd6e Bot Updating Templated Files 2023-05-01 18:19:37 +00:00
LinuxServer-CI
1939f832f8 Bot Updating Package Versions 2023-04-24 20:21:57 +02:00
LinuxServer-CI
e154cab43f Bot Updating Package Versions 2023-04-15 17:25:09 +02:00
Eric Nemchik
04cebcdde1
Merge pull request #169 from linuxserver/move-ssl-include
Move ssl.conf include to default.conf
2023-04-15 10:21:59 -05:00
Eric Nemchik
d97fc18699 Move ssl.conf include to default.conf 2023-04-13 11:04:38 -05:00
LinuxServer-CI
5470eb4620 Bot Updating Templated Files 2023-04-08 23:55:56 +02:00
Adam
37fb5b41e4
Merge pull request #168 from ssddanbrown/readme-path-mapping
Added file/folder path mapping to readme
2023-04-08 22:54:07 +01:00
Dan Brown
0ffb30d5f8
Added path mapping section to readme
Closes linuxserver/docker-bookstack#167
2023-04-08 22:26:41 +01:00
LinuxServer-CI
b84b29044c Bot Updating Package Versions 2023-04-06 18:05:49 +02:00
LinuxServer-CI
fc9ae3f415 Bot Updating Templated Files 2023-04-06 11:02:44 -05:00
LinuxServer-CI
9dc39e38b8 Bot Updating Templated Files 2023-04-06 18:01:11 +02:00
LinuxServer-CI
0f43ec9cff Bot Updating Templated Files 2023-04-06 17:59:30 +02:00
LinuxServer-CI
b85f940dee Bot Updating Package Versions 2023-03-30 18:00:37 +02:00
LinuxServer-CI
1fae28bf60 Bot Updating Package Versions 2023-03-25 13:38:10 +01:00
LinuxServer-CI
f7bb9e3e4a Bot Updating Package Versions 2023-03-23 17:00:21 +01:00
LinuxServer-CI
478a6164ba Bot Updating Package Versions 2023-03-09 17:00:32 +01:00
LinuxServer-CI
959c9ccef9 Bot Updating Package Versions 2023-03-02 17:00:50 +01:00
LinuxServer-CI
99745f761f Bot Updating Package Versions 2023-03-02 02:23:52 +01:00
LinuxServer-CI
8c92c15aa6 Bot Updating Templated Files 2023-03-01 19:19:47 -06:00
LinuxServer-CI
c0cc940e09 Bot Updating Templated Files 2023-03-02 02:18:18 +01:00
aptalca
602677fe43
Merge pull request #164 from ssddanbrown/master
Added php81-iconv as an installed php extension
2023-03-01 20:16:45 -05:00
aptalca
cc131b813e
update changelog 2023-03-01 20:04:50 -05:00
Dan Brown
792b1a8feb
Added php81-iconv as an installed php extension
Adding since the iconv php extension is a requirement for BookStack that
has previously been polyfilled but is now needed as an extension.
Related to https://github.com/linuxserver/docker-bookstack/issues/162
2023-03-02 00:34:26 +00:00
LinuxServer-CI
9c8985d8c7 Bot Updating Package Versions 2023-02-26 05:21:06 -06:00
LinuxServer-CI
67659ad9cd Bot Updating Package Versions 2023-02-23 10:00:37 -06:00
LinuxServer-CI
abfae9ed0c Bot Updating Package Versions 2023-02-16 17:03:42 +01:00
LinuxServer-CI
292160dfdd Bot Updating Templated Files 2023-02-16 10:01:12 -06:00
LinuxServer-CI
d348118c54 Bot Updating Templated Files 2023-02-16 16:59:27 +01:00
LinuxServer-CI
0f9e3082e0 Bot Updating Package Versions 2023-02-09 10:00:13 -06:00
LinuxServer-CI
66af27334f Bot Updating Package Versions 2023-02-02 06:46:33 -06:00
LinuxServer-CI
6aaf90dff8 Bot Updating Package Versions 2023-01-23 11:04:20 -06:00
Eric Nemchik
366fca2ab4
Merge pull request #158 from linuxserver/3.17
Rebase to alpine 3.17 with php8.1
2023-01-23 11:01:39 -06:00
Eric Nemchik
0b903bdfef Fix dependencies 2023-01-22 14:48:04 -06:00
Eric Nemchik
4b7807780b Remove -tmp logic 2023-01-20 18:51:08 -06:00
Eric Nemchik
288cb8d25b Remove -tmp logic 2023-01-20 18:18:44 -06:00
Eric Nemchik
1603fb13fc Remove base packages 2023-01-20 18:15:13 -06:00
Eric Nemchik
231349b842 Fix date 2023-01-19 20:39:21 -06:00
Eric Nemchik
ebeadd336f Rebase to alpine 3.17 with php8.1 2023-01-19 20:18:45 -06:00
LinuxServer-CI
966414b527 Bot Updating Package Versions 2023-01-19 17:00:58 +01:00
aptalca
f38f5cf812
Merge pull request #156 from linuxserver/quotes
wrap .env values in quotes
2023-01-16 22:20:24 -05:00
aptalca
5889c9e4ae wrap .env values in quotes 2023-01-16 22:04:26 -05:00
Eric Nemchik
d690e1d184
Merge pull request #155 from linuxserver/format
Format shell scripts
2023-01-15 10:45:42 -06:00
Eric Nemchik
0752ff3f75 Format shell scripts 2023-01-15 09:48:22 -06:00
aptalca
b860952860
Merge pull request #154 from linuxserver/sedpass
fix db password setting (sed escape &)
2023-01-05 16:34:33 -05:00
aptalca
d3460595f8 fix db password setting (sed escape &) 2023-01-05 15:53:47 -05:00
LinuxServer-CI
0a8973bb32 Bot Updating Package Versions 2022-12-29 17:00:12 +01:00
LinuxServer-CI
894731d11d Bot Updating Templated Files 2022-12-27 18:00:48 +01:00
driz
e65cb66dd5
Merge pull request #152 from linuxserver/TZ-in-sample
Update readme-vars.yml
2022-12-27 10:59:32 -06:00
driz
be4b7a6805
Update readme-vars.yml 2022-12-27 11:14:58 -05:00
LinuxServer-CI
3f99b8d3b3 Bot Updating Package Versions 2022-12-23 10:23:08 -06:00
Adam
7d28720725
Merge pull request #142 from linuxserver/db-check
Cleanup db check so it doesn't spam the console
2022-12-23 16:19:23 +00:00
Adam
3d02d092f2
Merge branch 'master' into db-check 2022-12-23 10:16:17 +00:00
TheSpad
351bb78bd2
Support user-supplied db port for startup check 2022-12-23 10:15:29 +00:00
LinuxServer-CI
240d12383d Bot Updating Templated Files 2022-12-22 16:35:07 -06:00
Eric Nemchik
c075b282cc
Merge pull request #136 from NetLah-external/improve-nc-mysql-host-port
Extract host and port from DB_HOST also support DB_PORT to test connection instead of only use default port 3306
2022-12-22 16:33:41 -06:00
Tho Ho
e2bd737026
sed and grep to support .env.sample upstream comments with # 2022-12-23 00:27:42 +08:00
Tho Ho
987b111e04
Update root/etc/cont-init.d/50-config
Avoid grep -E, change to regex

Co-authored-by: Eric Nemchik <eric@nemchik.com>
2022-12-22 22:12:55 +08:00
Tho Ho
8cb08dab14
Merge branch 'master' into improve-nc-mysql-host-port
# Conflicts:
#	root/etc/cont-init.d/50-config
2022-12-22 11:17:38 +08:00
driz
a27574b2b1
Merge pull request #151 from linuxserver/dbpass
update db info in .env file when env vars are updated
2022-12-21 09:34:29 -06:00
aptalca
7a6a15ebee update db info in .env file when env vars are updated 2022-12-21 10:17:22 -05:00
Tho Ho
a8e02b6b2d
Merge branch 'linuxserver:master' into improve-nc-mysql-host-port 2022-12-15 20:17:23 +08:00
LinuxServer-CI
8917e5dac7 Bot Updating Templated Files 2022-11-30 13:51:27 +01:00
LinuxServer-CI
270010ba93 Bot Updating Templated Files 2022-11-30 13:50:10 +01:00
LinuxServer-CI
2493ccc5ee Bot Updating Templated Files 2022-11-30 13:48:50 +01:00
LinuxServer-CI
ce3f942f09 Bot Updating Templated Files 2022-11-10 10:41:21 -06:00
LinuxServer-CI
214aa452ae Bot Updating Package Versions 2022-11-10 10:00:28 -06:00
LinuxServer-CI
fd055196e8 Bot Updating Package Versions 2022-11-03 11:17:40 -05:00
LinuxServer-CI
61039b8749 Bot Updating Package Versions 2022-11-02 16:50:55 +00:00
LinuxServer-CI
675eb4ecbf Bot Updating Package Versions 2022-10-27 18:00:26 +02:00
LinuxServer-CI
41efff8e26 Bot Updating Package Versions 2022-10-20 16:14:50 +00:00
TheSpad
1b04bcb2c0
Update test init string 2022-10-17 16:46:11 +01:00
TheSpad
697ce2a9f6
Cleanup db check so it doesn't spam the console 2022-10-17 16:43:46 +01:00
TheSpad
fa84257aea
Remove unnecessary packages 2022-10-17 16:43:34 +01:00
LinuxServer-CI
9ae485a116 Bot Updating Package Versions 2022-10-13 11:11:47 -05:00
Tho Ho
3b2550bfe2
support ipv4|[ipv6]|domain:port; fix Alpine grep P
(cherry picked from commit 1fde0ad70e72c73e8062f4a2d299d2cda9a46dc6)
2022-10-12 03:53:24 +08:00
Eric Nemchik
16c3c51494
Rework logic to account for ipv6 (#1)
Also, always set host and port
2022-10-12 03:52:42 +08:00
Tho Ho
014fb2a376
fix readme-vars: properly escaped password 2022-10-11 16:23:51 +08:00
Tho Ho
ab7571658d
Merge branch 'master' into improve-nc-mysql-host-port
# Conflicts:
#	root/etc/cont-init.d/50-config
2022-10-11 16:19:38 +08:00
LinuxServer-CI
d16c8aab6c Bot Updating Templated Files 2022-10-10 11:27:36 -05:00
driz
2e9e08e3d3
Merge pull request #140 from linuxserver/remove-escape-logic
Remove db_pass escape logic
2022-10-10 12:26:03 -04:00
Tho Ho
60ac384c42
Update README support DB_PORT 2022-10-10 22:59:55 +08:00
Tho Ho
f9bb8bc463
Revert "Update README support DB_PORT"
This reverts commit f033396905edbf21fc232a4772685fc9b3a9d73a.
2022-10-10 22:59:14 +08:00
driz
46db2c5bd0
Update README.md 2022-10-10 10:00:12 -04:00
driz
64446dabf4
Update readme-vars.yml 2022-10-10 09:59:35 -04:00
driz
f224890081
Update README.md 2022-10-10 09:58:22 -04:00
driz
11d8054850
Update readme-vars.yml 2022-10-10 09:56:53 -04:00
driz
d3858977d7
Update 50-config 2022-10-10 07:57:58 -04:00
Tho Ho
10f9699fff
Add DB_HOST= to .env if previous version not have 2022-10-10 15:48:57 +08:00
Tho Ho
f033396905
Update README support DB_PORT 2022-10-10 14:52:34 +08:00
Tho Ho
5fa1132792
Improve grep and seq matching 2022-10-10 14:30:21 +08:00
Tho Ho
71750e16a3
Support DB_PORT 2022-10-09 02:48:57 +08:00
LinuxServer-CI
e19234525a Bot Updating Package Versions 2022-10-07 19:44:06 +02:00
Eric Nemchik
039f6c4a96
Merge pull request #139 from linuxserver/fix-date
Update default.conf.sample
2022-10-07 12:41:14 -05:00
Eric Nemchik
06f369e0d8
Update default.conf.sample 2022-10-06 14:46:20 -05:00
Eric Nemchik
9ee92d89ee
Merge pull request #137 from linuxserver/default_server
Add default_server
2022-10-05 05:36:13 -05:00
Eric Nemchik
b8bd87f083 Add default_server 2022-10-04 16:20:35 -05:00
Tho Ho
9cf173b16b Extract host and port from DB_HOST 2022-09-23 13:56:16 +08:00
LinuxServer-CI
e301c5fb78 Bot Updating Package Versions 2022-09-22 11:03:51 -05:00
LinuxServer-CI
99ac907b96 Bot Updating Templated Files 2022-09-20 14:58:01 +02:00
LinuxServer-CI
91408e7216 Bot Updating Package Versions 2022-09-15 18:01:52 +02:00
LinuxServer-CI
c387f0126e Bot Updating Package Versions 2022-09-08 14:55:03 +02:00
LinuxServer-CI
8d82576559 Bot Updating Package Versions 2022-08-25 18:00:00 +02:00
Eric Nemchik
6b6ecc9bb0
Merge pull request #131 from linuxserver/default-tweaks
nginx conf tweaks
2022-08-23 16:53:16 -05:00
Eric Nemchik
a50d975a98 nginx conf tweaks 2022-08-23 09:54:58 -05:00
Eric Nemchik
df24c3860e
Merge pull request #130 from linuxserver/config-volume
Config volume
2022-08-22 08:07:19 -05:00
Eric Nemchik
313f1e7c0d Keep /config volume consistently 2022-08-21 17:04:32 -05:00
Eric Nemchik
78bd55b349 Keep /config volume consistently 2022-08-21 16:53:05 -05:00
LinuxServer-CI
b7028c984a Bot Updating Package Versions 2022-08-21 16:11:58 +02:00
Eric Nemchik
0dd9c4b46f
Merge pull request #113 from linuxserver/standard-base
Standard base
2022-08-21 09:08:24 -05:00
Eric Nemchik
ed2f423949 Add default location migration 2022-08-20 18:53:43 -05:00
Eric Nemchik
32df06d2ab Use standard nginx.conf from lsio alpine nginx base image 2022-08-20 12:39:27 -05:00
LinuxServer-CI
e3c5253633 Bot Updating Package Versions 2022-08-18 18:10:36 +02:00
LinuxServer-CI
8cf651cdf9 Bot Updating Package Versions 2022-08-11 09:26:30 -05:00
LinuxServer-CI
30d4498b36 Bot Updating Package Versions 2022-08-04 18:00:14 +02:00
LinuxServer-CI
3eb67c59cf Bot Updating Package Versions 2022-08-02 13:25:32 +02:00
LinuxServer-CI
48cc137141 Bot Updating Package Versions 2022-07-28 09:32:58 -05:00
LinuxServer-CI
8a50be63e3 Bot Updating Package Versions 2022-07-21 18:01:05 +02:00
LinuxServer-CI
f80eb7c2c0 Bot Updating Package Versions 2022-07-14 11:00:37 -05:00
LinuxServer-CI
3c5a3e7fd0 Bot Updating Package Versions 2022-07-07 18:00:29 +02:00
LinuxServer-CI
1253e76f12 Bot Updating Package Versions 2022-06-30 18:00:15 +02:00
LinuxServer-CI
3f44534271 Bot Updating Package Versions 2022-06-23 11:00:09 -05:00
LinuxServer-CI
0398dba20e Bot Updating Package Versions 2022-06-16 11:00:23 -05:00
LinuxServer-CI
7c3503a1d0 Bot Updating Package Versions 2022-06-09 11:00:37 -05:00
LinuxServer-CI
750e15a70b Bot Updating Package Versions 2022-06-02 11:00:39 -05:00
LinuxServer-CI
4179bddddc Bot Updating Package Versions 2022-05-30 21:47:49 -05:00
aptalca
7e2f3fe9da
Merge pull request #123 from linuxserver/dbpass-sed
Improve sed and maintain consistency with other database password sed
2022-05-30 22:43:26 -04:00
driz
5a5da8d6e7
Update 50-config
improve sed for password
2022-05-30 16:43:33 -04:00
LinuxServer-CI
1365874f03 Bot Updating Package Versions 2022-05-26 11:00:11 -05:00
LinuxServer-CI
0f60a1839b Bot Updating Package Versions 2022-05-19 11:22:06 -05:00
LinuxServer-CI
3ceb46e54e Bot Updating Package Versions 2022-05-12 11:00:36 -05:00
LinuxServer-CI
09ceb8ec6b Bot Updating Package Versions 2022-05-09 10:32:17 -05:00
LinuxServer-CI
6d78458e97 Bot Updating Package Versions 2022-05-05 18:00:18 +02:00
LinuxServer-CI
4c2f3aa850 Bot Updating Templated Files 2022-05-04 23:27:08 +02:00
LinuxServer-CI
0adab4d872 Bot Updating Templated Files 2022-05-04 16:25:46 -05:00
LinuxServer-CI
6249989ed9 Bot Updating Package Versions 2022-04-28 18:00:39 +02:00
LinuxServer-CI
a13c1a6a25 Bot Updating Package Versions 2022-04-14 11:03:45 -05:00
LinuxServer-CI
cf468f5ac0 Bot Updating Package Versions 2022-04-07 11:01:18 -05:00
LinuxServer-CI
08e142650f Bot Updating Package Versions 2022-03-31 18:00:36 +02:00
LinuxServer-CI
cf331310ea Bot Updating Package Versions 2022-03-24 17:30:11 +01:00
LinuxServer-CI
aa29174802 Bot Updating Package Versions 2022-03-17 11:03:36 -05:00
LinuxServer-CI
1c319760d4 Bot Updating Templated Files 2022-03-14 21:37:57 +01:00
Adam
4755af43b9
Merge pull request #119 from linuxserver/fix-changelog 2022-03-14 20:36:42 +00:00
TheSpad
cd48677611 Add changelog note for #111 2022-03-14 20:16:27 +00:00
Adam
139c220cd9
Merge pull request #111 from rjmidau/custom-themes-folder 2022-03-14 20:14:59 +00:00
LinuxServer-CI
f1b66f3d97 Bot Updating Package Versions 2022-03-10 17:49:36 +01:00
LinuxServer-CI
3c00492f9c Bot Updating Package Versions 2022-03-03 17:24:52 +01:00
LinuxServer-CI
0284885dba Bot Updating Package Versions 2022-02-24 17:00:14 +01:00
LinuxServer-CI
c46e084218 Bot Updating Package Versions 2022-02-17 17:00:31 +01:00
LinuxServer-CI
213b9e38b3 Bot Updating Package Versions 2022-02-10 17:00:55 +01:00
LinuxServer-CI
0e953b9de6 Bot Updating Package Versions 2022-02-06 17:35:57 +01:00
LinuxServer-CI
a59932fda8 Bot Updating Package Versions 2022-02-03 17:00:40 +01:00
LinuxServer-CI
7151ea84a0 Bot Updating Package Versions 2022-01-27 17:00:30 +01:00
LinuxServer-CI
a3116b03c2 Bot Updating Package Versions 2022-01-20 17:00:31 +01:00
LinuxServer-CI
dce5e3c923 Bot Updating Package Versions 2021-12-23 17:00:09 +01:00
LinuxServer-CI
8fa0d63b24 Bot Updating Templated Files 2021-12-22 18:33:14 +01:00
LinuxServer-CI
1c2a823a5e Bot Updating Templated Files 2021-12-22 18:31:46 +01:00
LinuxServer-CI
f95a455dfe Bot Updating Package Versions 2021-11-25 17:00:11 +01:00
LinuxServer-CI
4a1f983115 Bot Updating Package Versions 2021-11-23 22:24:31 +01:00
LinuxServer-CI
ff9f35c37d Bot Updating Package Versions 2021-11-18 17:00:26 +01:00
LinuxServer-CI
4a067d6fe2 Bot Updating Package Versions 2021-11-11 17:00:33 +01:00
LinuxServer-CI
08320221be Bot Updating Package Versions 2021-10-28 17:28:35 +02:00
LinuxServer-CI
579328317e Bot Updating Package Versions 2021-10-25 17:24:55 +02:00
LinuxServer-CI
367cb91e7f Bot Updating Package Versions 2021-10-21 18:16:09 +02:00
LinuxServer-CI
753de3e0f9 Bot Updating Templated Files 2021-10-17 19:32:31 +02:00
aptalca
202c91ef64
Merge pull request #112 from linuxserver/lscr
Add lscr to custom sample comopse
2021-10-17 13:31:18 -04:00
Adam
c4cce37652
Add lscr to custom sample comopse 2021-10-15 21:42:35 +01:00
LinuxServer-CI
f7c9f14d0d Bot Updating Package Versions 2021-10-14 18:00:25 +02:00
Robert Meredith
38b5546950
Create themes folder in config folder and symlink to it 2021-10-09 17:21:35 +11:00
LinuxServer-CI
5524fa4ad6 Bot Updating Package Versions 2021-10-07 18:01:02 +02:00
LinuxServer-CI
0d863316e0 Bot Updating Templated Files 2021-10-04 18:38:42 +02:00
LinuxServer-CI
680ec4752f Bot Updating Templated Files 2021-10-04 18:37:37 +02:00
LinuxServer-CI
9dc6398cf8 Bot Updating Package Versions 2021-09-30 18:00:00 +02:00
LinuxServer-CI
05f0a7f5c7 Bot Updating Package Versions 2021-09-23 18:00:08 +02:00
LinuxServer-CI
fe1b895d7d Bot Updating Package Versions 2021-09-16 18:00:14 +02:00
Alex Phillips
7f19f9775c
Merge pull request #106 from linuxserver/overlayfs-workaround
overlay-fs bug workaround - move to tmp location then move and chown …
2021-09-09 19:48:55 -04:00
Alex Phillips
63a61cf818 overlay-fs bug workaround - move to tmp location then move and chown on init 2021-09-09 17:47:38 -04:00
LinuxServer-CI
8361cd993e Bot Updating Package Versions 2021-09-09 18:00:19 +02:00
LinuxServer-CI
8dba937f96 Bot Updating Package Versions 2021-09-02 18:00:11 +02:00
LinuxServer-CI
1a5a35391f Bot Updating Package Versions 2021-08-31 23:22:36 +02:00
LinuxServer-CI
19ecca019f Bot Updating Package Versions 2021-08-26 18:03:29 +02:00
LinuxServer-CI
ed64d39079 Bot Updating Templated Files 2021-08-26 17:59:37 +02:00
LinuxServer-CI
3aec0b9e49 Bot Updating Package Versions 2021-08-12 18:01:54 +02:00
LinuxServer-CI
3e15b27041 Bot Updating Package Versions 2021-08-05 18:02:21 +02:00
LinuxServer-CI
12d3cd6e98 Bot Updating Package Versions 2021-07-30 20:59:06 +02:00
LinuxServer-CI
a8ee4efc95 Bot Updating Templated Files 2021-07-30 20:55:48 +02:00
LinuxServer-CI
eaef5ad4ca Bot Updating Templated Files 2021-07-30 20:54:23 +02:00
Homer
27e32436fc
Merge pull request #104 from homerr/readme-update
corrected typo
2021-07-30 19:53:00 +01:00
LinuxServer-CI
17e5df5758 Bot Updating Package Versions 2021-07-29 18:01:33 +02:00
LinuxServer-CI
2a666334cc Bot Updating Package Versions 2021-07-22 18:01:15 +02:00
homerr
6b7889860b corrected typo 2021-07-16 09:15:40 +01:00
LinuxServer-CI
08c8fdb44c Bot Updating Package Versions 2021-07-15 16:01:20 +00:00
47 changed files with 1913 additions and 1316 deletions

2
.editorconfig Executable file → Normal file
View File

@ -15,6 +15,6 @@ trim_trailing_whitespace = false
indent_style = space indent_style = space
indent_size = 2 indent_size = 2
[{**.sh,root/etc/cont-init.d/**,root/etc/services.d/**}] [{**.sh,root/etc/s6-overlay/s6-rc.d/**,root/etc/cont-init.d/**,root/etc/services.d/**}]
indent_style = space indent_style = space
indent_size = 4 indent_size = 4

6
.github/CONTRIBUTING.md vendored Executable file → Normal file
View File

@ -6,7 +6,7 @@
* Read, and fill the Pull Request template * Read, and fill the Pull Request template
* If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR * If this is a fix for a typo (in code, documentation, or the README) please file an issue and let us sort it out. We do not need a PR
* If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message * If the PR is addressing an existing issue include, closes #\<issue number>, in the body of the PR commit message
* If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://discord.gg/YWrKVTn) * If you want to discuss changes, you can also bring it up in [#dev-talk](https://discordapp.com/channels/354974912613449730/757585807061155840) in our [Discord server](https://linuxserver.io/discord)
## Common files ## Common files
@ -105,10 +105,10 @@ docker build \
-t linuxserver/bookstack:latest . -t linuxserver/bookstack:latest .
``` ```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash ```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.

0
.github/FUNDING.yml vendored Executable file → Normal file
View File

2
.github/ISSUE_TEMPLATE/config.yml vendored Executable file → Normal file
View File

@ -1,7 +1,7 @@
blank_issues_enabled: false blank_issues_enabled: false
contact_links: contact_links:
- name: Discord chat support - name: Discord chat support
url: https://discord.gg/YWrKVTn url: https://linuxserver.io/discord
about: Realtime support / chat with the community and the team. about: Realtime support / chat with the community and the team.
- name: Discourse discussion forum - name: Discourse discussion forum

View File

@ -1,40 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
---
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. --->
<!--- Provide a general summary of the bug in the Title above -->
------------------------------
## Expected Behavior
<!--- Tell us what should happen -->
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Steps to Reproduce
<!--- Provide a link to a live example, or an unambiguous set of steps to -->
<!--- reproduce this bug. Include code to reproduce, if relevant -->
1.
2.
3.
4.
## Environment
**OS:**
**CPU architecture:** x86_64/arm32/arm64
**How docker service was installed:**
<!--- ie. from the official docker repo, from the distro repo, nas OS provided, etc. -->
<!--- Providing context helps us come up with a solution that is most useful in the real world -->
## Command used to create docker container (run/create/compose/screenshot)
<!--- Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container -->
## Docker logs
<!--- Provide a full docker log, output of "docker logs bookstack" -->

76
.github/ISSUE_TEMPLATE/issue.bug.yml vendored Normal file
View File

@ -0,0 +1,76 @@
# Based on the issue template
name: Bug report
description: Create a report to help us improve
title: "[BUG] <title>"
labels: [Bug]
body:
- type: checkboxes
attributes:
label: Is there an existing issue for this?
description: Please search to see if an issue already exists for the bug you encountered.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Current Behavior
description: Tell us what happens instead of the expected behavior.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: Tell us what should happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. In this environment...
2. With this config...
3. Run '...'
4. See error...
validations:
required: true
- type: textarea
attributes:
label: Environment
description: |
examples:
- **OS**: Ubuntu 20.04
- **How docker service was installed**: distro's packagemanager
value: |
- OS:
- How docker service was installed:
render: markdown
validations:
required: false
- type: dropdown
attributes:
label: CPU architecture
options:
- x86-64
- arm64
validations:
required: true
- type: textarea
attributes:
label: Docker creation
description: |
Command used to create docker container
Provide your docker create/run command or compose yaml snippet, or a screenshot of settings if using a gui to create the container
render: bash
validations:
required: true
- type: textarea
attributes:
description: |
Provide a full docker log, output of "docker logs bookstack"
label: Container logs
placeholder: |
Output of `docker logs bookstack`
render: bash
validations:
required: true

View File

@ -1,25 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
---
[linuxserverurl]: https://linuxserver.io
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)][linuxserverurl]
<!--- If you are new to Docker or this application our issue tracker is **ONLY** used for reporting bugs or requesting features. Please use [our discord server](https://discord.gg/YWrKVTn) for general support. --->
<!--- If this acts as a feature request please ask yourself if this modification is something the whole userbase will benefit from --->
<!--- If this is a specific change for corner case functionality or plugins please look at making a Docker Mod or local script https://blog.linuxserver.io/2019/09/14/customizing-our-containers/ -->
<!--- Provide a general summary of the request in the Title above -->
------------------------------
## Desired Behavior
<!--- Tell us what should happen -->
## Current Behavior
<!--- Tell us what happens instead of the expected behavior -->
## Alternatives Considered
<!--- Tell us what other options you have tried or considered -->

View File

@ -0,0 +1,31 @@
# Based on the issue template
name: Feature request
description: Suggest an idea for this project
title: "[FEAT] <title>"
labels: [enhancement]
body:
- type: checkboxes
attributes:
label: Is this a new feature request?
description: Please search to see if a feature request already exists.
options:
- label: I have searched the existing issues
required: true
- type: textarea
attributes:
label: Wanted change
description: Tell us what you want to happen.
validations:
required: true
- type: textarea
attributes:
label: Reason for change
description: Justify your request, why do you want it, what is the benefit.
validations:
required: true
- type: textarea
attributes:
label: Proposed code change
description: Do you have a potential code change in mind?
validations:
required: false

View File

@ -0,0 +1,19 @@
name: Issue & PR Tracker
on:
issues:
types: [opened,reopened,labeled,unlabeled,closed]
pull_request_target:
types: [opened,reopened,review_requested,review_request_removed,labeled,unlabeled,closed]
pull_request_review:
types: [submitted,edited,dismissed]
permissions:
contents: read
jobs:
manage-project:
permissions:
issues: write
uses: linuxserver/github-workflows/.github/workflows/issue-pr-tracker.yml@v1
secrets: inherit

16
.github/workflows/call_issues_cron.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: '3 9 * * *'
workflow_dispatch:
permissions:
contents: read
jobs:
stale:
permissions:
issues: write
pull-requests: write
uses: linuxserver/github-workflows/.github/workflows/issues-cron.yml@v1
secrets: inherit

145
.github/workflows/external_trigger.yml vendored Executable file → Normal file
View File

@ -3,24 +3,42 @@ name: External Trigger Main
on: on:
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-master: external-trigger-master:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v4.1.1
- name: External Trigger - name: External Trigger
if: github.ref == 'refs/heads/master' if: github.ref == 'refs/heads/master'
env:
SKIP_EXTERNAL_TRIGGER: ${{ vars.SKIP_EXTERNAL_TRIGGER }}
run: | run: |
if [ -n "${{ secrets.PAUSE_EXTERNAL_TRIGGER_BOOKSTACK_MASTER }}" ]; then printf "# External trigger for docker-bookstack\n\n" >> $GITHUB_STEP_SUMMARY
echo "**** Github secret PAUSE_EXTERNAL_TRIGGER_BOOKSTACK_MASTER is set; skipping trigger. ****" if grep -q "^bookstack_master_" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`bookstack_master_\`; will skip trigger if version matches." >> $GITHUB_STEP_SUMMARY
elif grep -q "^bookstack_master" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` contains \`bookstack_master\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
fi fi
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_BOOKSTACK_MASTER\". ****" echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving external version ****" echo "> External trigger running off of master branch. To disable this trigger, add \`bookstack_master\` into the Github organizational variable \`SKIP_EXTERNAL_TRIGGER\`." >> $GITHUB_STEP_SUMMARY
printf "\n## Retrieving external version\n\n" >> $GITHUB_STEP_SUMMARY
EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" | jq -r '. | .tag_name') EXT_RELEASE=$(curl -u "${{ secrets.CR_USER }}:${{ secrets.CR_PAT }}" -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" | jq -r '. | .tag_name')
echo "Type is \`github_stable\`" >> $GITHUB_STEP_SUMMARY
if grep -q "^bookstack_master_${EXT_RELEASE}" <<< "${SKIP_EXTERNAL_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_EXTERNAL_TRIGGER\` matches current external release; skipping trigger." >> $GITHUB_STEP_SUMMARY
exit 0
fi
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
echo "**** Can't retrieve external version, exiting ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Can't retrieve external version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve external version for bookstack branch master" FAILURE_REASON="Can't retrieve external version for bookstack branch master"
GHA_TRIGGER_URL="https://github.com/linuxserver/docker-bookstack/actions/runs/${{ github.run_id }}" GHA_TRIGGER_URL="https://github.com/linuxserver/docker-bookstack/actions/runs/${{ github.run_id }}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
@ -28,65 +46,102 @@ jobs:
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
EXT_RELEASE=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g') EXT_RELEASE_SANITIZED=$(echo ${EXT_RELEASE} | sed 's/[~,%@+;:/]//g')
echo "**** External version: ${EXT_RELEASE} ****" echo "Sanitized external version: \`${EXT_RELEASE_SANITIZED}\`" >> $GITHUB_STEP_SUMMARY
echo "**** Retrieving last pushed version ****" echo "Retrieving last pushed version" >> $GITHUB_STEP_SUMMARY
image="linuxserver/bookstack" image="linuxserver/bookstack"
tag="latest" tag="latest"
token=$(curl -sX GET \ token=$(curl -sX GET \
"https://ghcr.io/token?scope=repository%3Alinuxserver%2Fbookstack%3Apull" \ "https://ghcr.io/token?scope=repository%3Alinuxserver%2Fbookstack%3Apull" \
| jq -r '.token') | jq -r '.token')
multidigest=$(curl -s \ multidigest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.index.v1+json" \
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}")
if jq -e '.layers // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# If there's a layer element it's a single-arch manifest so just get that digest
digest=$(jq -r '.config.digest' <<< "${multidigest}")
else
# Otherwise it's multi-arch or has manifest annotations
if jq -e '.manifests[]?.annotations // empty' <<< "${multidigest}" >/dev/null 2>&1; then
# Check for manifest annotations and delete if found
multidigest=$(jq 'del(.manifests[] | select(.annotations))' <<< "${multidigest}")
fi
if [[ $(jq '.manifests | length' <<< "${multidigest}") -gt 1 ]]; then
# If there's still more than one digest, it's multi-arch
multidigest=$(jq -r ".manifests[] | select(.platform.architecture == \"amd64\").digest?" <<< "${multidigest}")
else
# Otherwise it's single arch
multidigest=$(jq -r ".manifests[].digest?" <<< "${multidigest}")
fi
if digest=$(curl -s \
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ --header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
--header "Accept: application/vnd.oci.image.manifest.v1+json" \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${tag}" \ "https://ghcr.io/v2/${image}/manifests/${multidigest}"); then
| jq -r 'first(.manifests[].digest)') digest=$(jq -r '.config.digest' <<< "${digest}");
digest=$(curl -s \ fi
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \ fi
--header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/manifests/${multidigest}" \
| jq -r '.config.digest')
image_info=$(curl -sL \ image_info=$(curl -sL \
--header "Authorization: Bearer ${token}" \ --header "Authorization: Bearer ${token}" \
"https://ghcr.io/v2/${image}/blobs/${digest}" \ "https://ghcr.io/v2/${image}/blobs/${digest}")
| jq -r '.container_config') if [[ $(echo $image_info | jq -r '.container_config') == "null" ]]; then
image_info=$(echo $image_info | jq -r '.config')
else
image_info=$(echo $image_info | jq -r '.container_config')
fi
IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}') IMAGE_RELEASE=$(echo ${image_info} | jq -r '.Labels.build_version' | awk '{print $3}')
IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}') IMAGE_VERSION=$(echo ${IMAGE_RELEASE} | awk -F'-ls' '{print $1}')
if [ -z "${IMAGE_VERSION}" ]; then if [ -z "${IMAGE_VERSION}" ]; then
echo "**** Can't retrieve last pushed version, exiting ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "Can't retrieve last pushed version, exiting" >> $GITHUB_STEP_SUMMARY
FAILURE_REASON="Can't retrieve last pushed version for bookstack tag latest" FAILURE_REASON="Can't retrieve last pushed version for bookstack tag latest"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680, curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 16711680,
"description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}], "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
exit 1 exit 1
fi fi
echo "**** Last pushed version: ${IMAGE_VERSION} ****" echo "Last pushed version: \`${IMAGE_VERSION}\`" >> $GITHUB_STEP_SUMMARY
if [ "${EXT_RELEASE}" == "${IMAGE_VERSION}" ]; then if [ "${EXT_RELEASE_SANITIZED}" == "${IMAGE_VERSION}" ]; then
echo "**** Version ${EXT_RELEASE} already pushed, exiting ****" echo "Sanitized version \`${EXT_RELEASE_SANITIZED}\` already pushed, exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** New version ${EXT_RELEASE} found; but there already seems to be an active build on Jenkins; exiting ****" echo "New version \`${EXT_RELEASE}\` found; but there already seems to be an active build on Jenkins; exiting" >> $GITHUB_STEP_SUMMARY
exit 0 exit 0
else else
echo "**** New version ${EXT_RELEASE} found; old version was ${IMAGE_VERSION}. Triggering new build ****" if [[ "${artifacts_found}" == "false" ]]; then
response=$(curl -iX POST \ echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/buildWithParameters?PACKAGE_CHECK=false \ echo "> New version detected, but not all artifacts are published yet; skipping trigger" >> $GITHUB_STEP_SUMMARY
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|") FAILURE_REASON="New version ${EXT_RELEASE} for bookstack tag latest is detected, however not all artifacts are uploaded to upstream release yet. Will try again later."
echo "**** Jenkins job queue url: ${response%$'\r'} ****" curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
echo "**** Sleeping 10 seconds until job starts ****" "description": "**Trigger Failed** \n**Reason:** '"${FAILURE_REASON}"' \n"}],
sleep 10 "username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url') else
buildurl="${buildurl%$'\r'}" printf "\n## Trigger new build\n\n" >> $GITHUB_STEP_SUMMARY
echo "**** Jenkins job build url: ${buildurl} ****" echo "New sanitized version \`${EXT_RELEASE_SANITIZED}\` found; old version was \`${IMAGE_VERSION}\`. Triggering new build" >> $GITHUB_STEP_SUMMARY
echo "**** Attempting to change the Jenkins job description ****" if [[ "${artifacts_found}" == "true" ]]; then
curl -iX POST \ echo "All artifacts seem to be uploaded." >> $GITHUB_STEP_SUMMARY
"${buildurl}submitDescription" \ fi
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \ response=$(curl -iX POST \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \ https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/buildWithParameters?PACKAGE_CHECK=false \
--data-urlencode "Submit=Submit" --user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Notifying Discord ****" echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
TRIGGER_REASON="A version change was detected for bookstack tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE}" echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, sleep 10
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}], buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA external trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"
echo "**** Notifying Discord ****"
TRIGGER_REASON="A version change was detected for bookstack tag latest. Old version:${IMAGE_VERSION} New version:${EXT_RELEASE_SANITIZED}"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Build Triggered** \n**Reason:** '"${TRIGGER_REASON}"' \n**Build URL:** '"${buildurl}display/redirect"' \n"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi
fi fi

37
.github/workflows/external_trigger_scheduler.yml vendored Executable file → Normal file
View File

@ -2,42 +2,47 @@ name: External Trigger Scheduler
on: on:
schedule: schedule:
- cron: '03 * * * *' - cron: '19 * * * *'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
external-trigger-scheduler: external-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: External Trigger Scheduler - name: External Trigger Scheduler
run: | run: |
echo "**** Branches found: ****" printf "# External trigger scheduler for docker-bookstack\n\n" >> $GITHUB_STEP_SUMMARY
git for-each-ref --format='%(refname:short)' refs/remotes printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
echo "**** Pulling the yq docker image ****" for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') if [[ "${br}" == "HEAD" ]]; then
echo "**** Evaluating branch ${br} ****" printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/jenkins-vars.yml \ continue
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) fi
if [ "$br" == "$ls_branch" ]; then printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
echo "**** Branch ${br} appears to be live; checking workflow. ****" ls_jenkins_vars=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/jenkins-vars.yml)
ls_branch=$(echo "${ls_jenkins_vars}" | yq -r '.ls_branch')
ls_trigger=$(echo "${ls_jenkins_vars}" | yq -r '.external_type')
if [[ "${br}" == "${ls_branch}" ]] && [[ "${ls_trigger}" != "os" ]]; then
echo "Branch appears to be live and trigger is not os; checking workflow." >> $GITHUB_STEP_SUMMARY
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/.github/workflows/external_trigger.yml > /dev/null 2>&1; then
echo "**** Workflow exists. Triggering external trigger workflow for branch ${br} ****." echo "Triggering external trigger workflow for branch." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ curl -iX POST \
-H "Authorization: token ${{ secrets.CR_PAT }}" \ -H "Authorization: token ${{ secrets.CR_PAT }}" \
-H "Accept: application/vnd.github.v3+json" \ -H "Accept: application/vnd.github.v3+json" \
-d "{\"ref\":\"refs/heads/${br}\"}" \ -d "{\"ref\":\"refs/heads/${br}\"}" \
https://api.github.com/repos/linuxserver/docker-bookstack/actions/workflows/external_trigger.yml/dispatches https://api.github.com/repos/linuxserver/docker-bookstack/actions/workflows/external_trigger.yml/dispatches
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "Skipping branch due to no external trigger workflow present." >> $GITHUB_STEP_SUMMARY
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "Skipping branch due to being detected as dev branch or having no external version." >> $GITHUB_STEP_SUMMARY
fi fi
done done

8
.github/workflows/greetings.yml vendored Executable file → Normal file
View File

@ -2,12 +2,18 @@ name: Greetings
on: [pull_request_target, issues] on: [pull_request_target, issues]
permissions:
contents: read
jobs: jobs:
greeting: greeting:
permissions:
issues: write
pull-requests: write
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/first-interaction@v1 - uses: actions/first-interaction@v1
with: with:
issue-message: 'Thanks for opening your first issue here! Be sure to follow the [bug](https://github.com/linuxserver/docker-bookstack/blob/master/.github/ISSUE_TEMPLATE/issue.bug.md) or [feature](https://github.com/linuxserver/docker-bookstack/blob/master/.github/ISSUE_TEMPLATE/issue.feature.md) issue templates!' issue-message: 'Thanks for opening your first issue here! Be sure to follow the relevant issue templates, or risk having this issue marked as invalid.'
pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-bookstack/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!' pr-message: 'Thanks for opening this pull request! Be sure to follow the [pull request template](https://github.com/linuxserver/docker-bookstack/blob/master/.github/PULL_REQUEST_TEMPLATE.md)!'
repo-token: ${{ secrets.GITHUB_TOKEN }} repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,38 +0,0 @@
name: Package Trigger Main
on:
workflow_dispatch:
jobs:
package-trigger-master:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2.3.3
- name: Package Trigger
if: github.ref == 'refs/heads/master'
run: |
if [ -n "${{ secrets.PAUSE_PACKAGE_TRIGGER_BOOKSTACK_MASTER }}" ]; then
echo "**** Github secret PAUSE_PACKAGE_TRIGGER_BOOKSTACK_MASTER is set; skipping trigger. ****"
exit 0
fi
if [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/lastBuild/api/json | jq -r '.building') == "true" ]; then
echo "**** There already seems to be an active build on Jenkins; skipping package trigger ****"
exit 0
fi
echo "**** Package trigger running off of master branch. To disable, set a Github secret named \"PAUSE_PACKAGE_TRIGGER_BOOKSTACK_MASTER\". ****"
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
echo "**** Jenkins job queue url: ${response%$'\r'} ****"
echo "**** Sleeping 10 seconds until job starts ****"
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "**** Jenkins job build url: ${buildurl} ****"
echo "**** Attempting to change the Jenkins job description ****"
curl -iX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"

111
.github/workflows/package_trigger_scheduler.yml vendored Executable file → Normal file
View File

@ -2,49 +2,102 @@ name: Package Trigger Scheduler
on: on:
schedule: schedule:
- cron: '51 15 * * 4' - cron: '4 18 * * 1'
workflow_dispatch: workflow_dispatch:
permissions:
contents: read
jobs: jobs:
package-trigger-scheduler: package-trigger-scheduler:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v2.3.3 - uses: actions/checkout@v4.1.1
with: with:
fetch-depth: '0' fetch-depth: '0'
- name: Package Trigger Scheduler - name: Package Trigger Scheduler
env:
SKIP_PACKAGE_TRIGGER: ${{ vars.SKIP_PACKAGE_TRIGGER }}
run: | run: |
echo "**** Branches found: ****" printf "# Package trigger scheduler for docker-bookstack\n\n" >> $GITHUB_STEP_SUMMARY
git for-each-ref --format='%(refname:short)' refs/remotes printf "Found the branches:\n\n%s\n" "$(git for-each-ref --format='- %(refname:lstrip=3)' refs/remotes)" >> $GITHUB_STEP_SUMMARY
echo "**** Pulling the yq docker image ****" for br in $(git for-each-ref --format='%(refname:lstrip=3)' refs/remotes)
docker pull ghcr.io/linuxserver/yq
for br in $(git for-each-ref --format='%(refname:short)' refs/remotes)
do do
br=$(echo "$br" | sed 's|origin/||g') if [[ "${br}" == "HEAD" ]]; then
echo "**** Evaluating branch ${br} ****" printf "\nSkipping %s.\n" ${br} >> $GITHUB_STEP_SUMMARY
ls_branch=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/jenkins-vars.yml \ continue
| docker run --rm -i --entrypoint yq ghcr.io/linuxserver/yq -r .ls_branch) fi
if [ "${br}" == "${ls_branch}" ]; then printf "\n## Evaluating \`%s\`\n\n" ${br} >> $GITHUB_STEP_SUMMARY
echo "**** Branch ${br} appears to be live; checking workflow. ****" JENKINS_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/jenkins-vars.yml)
if curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/.github/workflows/package_trigger.yml > /dev/null 2>&1; then if ! curl -sfX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/Jenkinsfile >/dev/null 2>&1; then
echo "**** Workflow exists. Triggering package trigger workflow for branch ${br}. ****" echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} " echo "> No Jenkinsfile found. Branch is either deprecated or is an early dev branch." >> $GITHUB_STEP_SUMMARY
curl -iX POST \ skipped_branches="${skipped_branches}${br} "
-H "Authorization: token ${{ secrets.CR_PAT }}" \ elif [[ "${br}" == $(yq -r '.ls_branch' <<< "${JENKINS_VARS}") ]]; then
-H "Accept: application/vnd.github.v3+json" \ echo "Branch appears to be live; checking workflow." >> $GITHUB_STEP_SUMMARY
-d "{\"ref\":\"refs/heads/${br}\"}" \ README_VARS=$(curl -sX GET https://raw.githubusercontent.com/linuxserver/docker-bookstack/${br}/readme-vars.yml)
https://api.github.com/repos/linuxserver/docker-bookstack/actions/workflows/package_trigger.yml/dispatches if [[ $(yq -r '.project_deprecation_status' <<< "${README_VARS}") == "true" ]]; then
sleep 30 echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Branch appears to be deprecated; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [[ $(yq -r '.skip_package_check' <<< "${JENKINS_VARS}") == "true" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Skipping branch ${br} due to \`skip_package_check\` being set in \`jenkins-vars.yml\`." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif grep -q "^bookstack_${br}" <<< "${SKIP_PACKAGE_TRIGGER}"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Github organizational variable \`SKIP_PACKAGE_TRIGGER\` contains \`bookstack_${br}\`; skipping trigger." >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
elif [ $(curl -s https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/${br}/lastBuild/api/json | jq -r '.building' 2>/dev/null) == "true" ]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> There already seems to be an active build on Jenkins; skipping package trigger for ${br}" >> $GITHUB_STEP_SUMMARY
skipped_branches="${skipped_branches}${br} "
else else
echo "**** Workflow doesn't exist; skipping trigger. ****" echo "> [!NOTE]" >> $GITHUB_STEP_SUMMARY
echo "> Triggering package trigger for branch ${br}" >> $GITHUB_STEP_SUMMARY
printf "> To disable, add \`bookstack_%s\` into the Github organizational variable \`SKIP_PACKAGE_TRIGGER\`.\n\n" "${br}" >> $GITHUB_STEP_SUMMARY
triggered_branches="${triggered_branches}${br} "
response=$(curl -iX POST \
https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/${br}/buildWithParameters?PACKAGE_CHECK=true \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} | grep -i location | sed "s|^[L|l]ocation: \(.*\)|\1|")
if [[ -z "${response}" ]]; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Jenkins build could not be triggered. Skipping branch."
continue
fi
echo "Jenkins [job queue url](${response%$'\r'})" >> $GITHUB_STEP_SUMMARY
echo "Sleeping 10 seconds until job starts" >> $GITHUB_STEP_SUMMARY
sleep 10
buildurl=$(curl -s "${response%$'\r'}api/json" | jq -r '.executable.url')
buildurl="${buildurl%$'\r'}"
echo "Jenkins job [build url](${buildurl})" >> $GITHUB_STEP_SUMMARY
echo "Attempting to change the Jenkins job description" >> $GITHUB_STEP_SUMMARY
if ! curl -ifX POST \
"${buildurl}submitDescription" \
--user ${{ secrets.JENKINS_USER }}:${{ secrets.JENKINS_TOKEN }} \
--data-urlencode "description=GHA package trigger https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}" \
--data-urlencode "Submit=Submit"; then
echo "> [!WARNING]" >> $GITHUB_STEP_SUMMARY
echo "> Unable to change the Jenkins job description."
fi
sleep 20
fi fi
else else
echo "**** ${br} appears to be a dev branch; skipping trigger. ****" echo "Skipping branch ${br} due to being detected as dev branch." >> $GITHUB_STEP_SUMMARY
fi fi
done done
echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****" if [[ -n "${triggered_branches}" ]] || [[ -n "${skipped_branches}" ]]; then
echo "**** Notifying Discord ****" if [[ -n "${triggered_branches}" ]]; then
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903, NOTIFY_BRANCHES="**Triggered:** ${triggered_branches} \n"
"description": "**Package Check Build(s) Triggered for bookstack** \n**Branch(es):** '"${triggered_branches}"' \n**Build URL:** '"https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-bookstack/activity/"' \n"}], NOTIFY_BUILD_URL="**Build URL:** https://ci.linuxserver.io/blue/organizations/jenkins/Docker-Pipeline-Builders%2Fdocker-bookstack/activity/ \n"
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }} echo "**** Package check build(s) triggered for branch(es): ${triggered_branches} ****"
fi
if [[ -n "${skipped_branches}" ]]; then
NOTIFY_BRANCHES="${NOTIFY_BRANCHES}**Skipped:** ${skipped_branches} \n"
fi
echo "**** Notifying Discord ****"
curl -X POST -H "Content-Type: application/json" --data '{"avatar_url": "https://cdn.discordapp.com/avatars/354986384542662657/df91181b3f1cf0ef1592fbe18e0962d7.png","embeds": [{"color": 9802903,
"description": "**Package Check Build(s) for bookstack** \n'"${NOTIFY_BRANCHES}"''"${NOTIFY_BUILD_URL}"'"}],
"username": "Github Actions"}' ${{ secrets.DISCORD_WEBHOOK }}
fi

12
.github/workflows/permissions.yml vendored Normal file
View File

@ -0,0 +1,12 @@
name: Permission check
on:
pull_request_target:
paths:
- '**/run'
- '**/finish'
- '**/check'
- 'root/migrations/*'
jobs:
permission_check:
uses: linuxserver/github-workflows/.github/workflows/init-svc-executable-permissions.yml@v1

View File

@ -1,23 +0,0 @@
name: Mark stale issues and pull requests
on:
schedule:
- cron: "30 1 * * *"
jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
with:
stale-issue-message: "This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-pr-message: "This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions."
stale-issue-label: 'no-issue-activity'
stale-pr-label: 'no-pr-activity'
days-before-stale: 30
days-before-close: 365
exempt-issue-labels: 'awaiting-approval,work-in-progress'
exempt-pr-labels: 'awaiting-approval,work-in-progress'
repo-token: ${{ secrets.GITHUB_TOKEN }}

View File

@ -1,64 +1,66 @@
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.14 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:3.23
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
ARG BOOKSTACK_RELEASE ARG BOOKSTACK_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="homerr" LABEL maintainer="thespad"
# package versions ENV S6_STAGE2_HOOK="/init-hook"
ARG BOOKSTACK_RELEASE
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache \ apk add --no-cache \
curl \
composer \
fontconfig \ fontconfig \
mariadb-client \
memcached \ memcached \
netcat-openbsd \ php85-dom \
php7-ctype \ php85-exif \
php7-curl \ php85-gd \
php7-dom \ php85-ldap \
php7-gd \ php85-mysqlnd \
php7-ldap \ php85-pdo_mysql \
php7-mbstring \ php85-pecl-memcached \
php7-memcached \ php85-tokenizer \
php7-mysqlnd \
php7-openssl \
php7-pdo_mysql \
php7-phar \
php7-simplexml \
php7-tokenizer \
qt5-qtbase \ qt5-qtbase \
tar \ ttf-freefont && \
ttf-freefont \ echo "**** configure php-fpm to pass env vars ****" && \
wkhtmltopdf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php85/php-fpm.d/www.conf && \
echo "**** configure php-fpm ****" && \ if ! grep -qxF 'clear_env = no' /etc/php85/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php85/php-fpm.d/www.conf; fi && \
sed -i 's/;clear_env = no/clear_env = no/g' /etc/php7/php-fpm.d/www.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php85/php-fpm.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php7/php-fpm.conf && \
echo "**** fetch bookstack ****" && \ echo "**** fetch bookstack ****" && \
mkdir -p\ mkdir -p\
/var/www/html && \ /app/www && \
if [ -z ${BOOKSTACK_RELEASE+x} ]; then \ if [ -z ${BOOKSTACK_RELEASE+x} ]; then \
BOOKSTACK_RELEASE=$(curl -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" \ BOOKSTACK_RELEASE=$(curl -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \ | awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \ fi && \
curl -o \ curl -o \
/tmp/bookstack.tar.gz -L \ /tmp/bookstack.tar.gz -L \
"https://github.com/BookStackApp/BookStack/archive/${BOOKSTACK_RELEASE}.tar.gz" && \ "https://github.com/BookStackApp/BookStack/archive/${BOOKSTACK_RELEASE}.tar.gz" && \
tar xf \ tar xf \
/tmp/bookstack.tar.gz -C \ /tmp/bookstack.tar.gz -C \
/var/www/html/ --strip-components=1 && \ /app/www/ --strip-components=1 && \
echo "**** install composer dependencies ****" && \ echo "**** install composer dependencies ****" && \
composer install -d /var/www/html/ && \ composer install -d /app/www/ && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** create symlinks ****" && \
/bin/bash -c \
'dst=(www/themes www/files www/images www/uploads backups www/framework/cache www/framework/sessions www/framework/views www/framework/purifier log/bookstack/laravel.log www/.env); \
src=(themes storage/uploads/files storage/uploads/images public/uploads storage/backups storage/framework/cache storage/framework/sessions storage/framework/views storage/framework/purifier storage/logs/laravel.log .env); \
for i in "${!src[@]}"; do rm -rf /app/www/"${src[i]}" && ln -s /config/"${dst[i]}" /app/www/"${src[i]}"; done' && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/root/.composer \ /tmp/* \
/tmp/* $HOME/.cache \
$HOME/.composer
# copy local files
COPY root/ / COPY root/ /
# ports and volumes
EXPOSE 80 443
VOLUME /config VOLUME /config
EXPOSE 80

View File

@ -1,64 +1,66 @@
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.14 # syntax=docker/dockerfile:1
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm64v8-3.23
# set version label # set version label
ARG BUILD_DATE ARG BUILD_DATE
ARG VERSION ARG VERSION
ARG BOOKSTACK_RELEASE ARG BOOKSTACK_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}" LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="homerr" LABEL maintainer="thespad"
# package versions ENV S6_STAGE2_HOOK="/init-hook"
ARG BOOKSTACK_RELEASE
RUN \ RUN \
echo "**** install packages ****" && \ echo "**** install runtime packages ****" && \
apk add --no-cache \ apk add --no-cache \
curl \
composer \
fontconfig \ fontconfig \
mariadb-client \
memcached \ memcached \
netcat-openbsd \ php85-dom \
php7-ctype \ php85-exif \
php7-curl \ php85-gd \
php7-dom \ php85-ldap \
php7-gd \ php85-mysqlnd \
php7-ldap \ php85-pdo_mysql \
php7-mbstring \ php85-pecl-memcached \
php7-memcached \ php85-tokenizer \
php7-mysqlnd \
php7-openssl \
php7-pdo_mysql \
php7-phar \
php7-simplexml \
php7-tokenizer \
qt5-qtbase \ qt5-qtbase \
tar \ ttf-freefont && \
ttf-freefont \ echo "**** configure php-fpm to pass env vars ****" && \
wkhtmltopdf && \ sed -E -i 's/^;?clear_env ?=.*$/clear_env = no/g' /etc/php85/php-fpm.d/www.conf && \
echo "**** configure php-fpm ****" && \ if ! grep -qxF 'clear_env = no' /etc/php85/php-fpm.d/www.conf; then echo 'clear_env = no' >> /etc/php85/php-fpm.d/www.conf; fi && \
sed -i 's/;clear_env = no/clear_env = no/g' /etc/php7/php-fpm.d/www.conf && \ echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php85/php-fpm.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php7/php-fpm.conf && \
echo "**** fetch bookstack ****" && \ echo "**** fetch bookstack ****" && \
mkdir -p\ mkdir -p\
/var/www/html && \ /app/www && \
if [ -z ${BOOKSTACK_RELEASE+x} ]; then \ if [ -z ${BOOKSTACK_RELEASE+x} ]; then \
BOOKSTACK_RELEASE=$(curl -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" \ BOOKSTACK_RELEASE=$(curl -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \ | awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \ fi && \
curl -o \ curl -o \
/tmp/bookstack.tar.gz -L \ /tmp/bookstack.tar.gz -L \
"https://github.com/BookStackApp/BookStack/archive/${BOOKSTACK_RELEASE}.tar.gz" && \ "https://github.com/BookStackApp/BookStack/archive/${BOOKSTACK_RELEASE}.tar.gz" && \
tar xf \ tar xf \
/tmp/bookstack.tar.gz -C \ /tmp/bookstack.tar.gz -C \
/var/www/html/ --strip-components=1 && \ /app/www/ --strip-components=1 && \
echo "**** install composer dependencies ****" && \ echo "**** install composer dependencies ****" && \
composer install -d /var/www/html/ && \ composer install -d /app/www/ && \
printf "Linuxserver.io version: ${VERSION}\nBuild-date: ${BUILD_DATE}" > /build_version && \
echo "**** create symlinks ****" && \
/bin/bash -c \
'dst=(www/themes www/files www/images www/uploads backups www/framework/cache www/framework/sessions www/framework/views www/framework/purifier log/bookstack/laravel.log www/.env); \
src=(themes storage/uploads/files storage/uploads/images public/uploads storage/backups storage/framework/cache storage/framework/sessions storage/framework/views storage/framework/purifier storage/logs/laravel.log .env); \
for i in "${!src[@]}"; do rm -rf /app/www/"${src[i]}" && ln -s /config/"${dst[i]}" /app/www/"${src[i]}"; done' && \
echo "**** cleanup ****" && \ echo "**** cleanup ****" && \
rm -rf \ rm -rf \
/root/.composer \ /tmp/* \
/tmp/* $HOME/.cache \
$HOME/.composer
# copy local files
COPY root/ / COPY root/ /
# ports and volumes
EXPOSE 80 443
VOLUME /config VOLUME /config
EXPOSE 80

View File

@ -1,64 +0,0 @@
FROM ghcr.io/linuxserver/baseimage-alpine-nginx:arm32v7-3.14
# set version label
ARG BUILD_DATE
ARG VERSION
ARG BOOKSTACK_RELEASE
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
LABEL maintainer="homerr"
# package versions
ARG BOOKSTACK_RELEASE
RUN \
echo "**** install packages ****" && \
apk add --no-cache \
curl \
composer \
fontconfig \
memcached \
netcat-openbsd \
php7-ctype \
php7-curl \
php7-dom \
php7-gd \
php7-ldap \
php7-mbstring \
php7-memcached \
php7-mysqlnd \
php7-openssl \
php7-pdo_mysql \
php7-phar \
php7-simplexml \
php7-tokenizer \
qt5-qtbase \
tar \
ttf-freefont \
wkhtmltopdf && \
echo "**** configure php-fpm ****" && \
sed -i 's/;clear_env = no/clear_env = no/g' /etc/php7/php-fpm.d/www.conf && \
echo "env[PATH] = /usr/local/bin:/usr/bin:/bin" >> /etc/php7/php-fpm.conf && \
echo "**** fetch bookstack ****" && \
mkdir -p\
/var/www/html && \
if [ -z ${BOOKSTACK_RELEASE+x} ]; then \
BOOKSTACK_RELEASE=$(curl -sX GET "https://api.github.com/repos/bookstackapp/bookstack/releases/latest" \
| awk '/tag_name/{print $4;exit}' FS='[""]'); \
fi && \
curl -o \
/tmp/bookstack.tar.gz -L \
"https://github.com/BookStackApp/BookStack/archive/${BOOKSTACK_RELEASE}.tar.gz" && \
tar xf \
/tmp/bookstack.tar.gz -C \
/var/www/html/ --strip-components=1 && \
echo "**** install composer dependencies ****" && \
composer install -d /var/www/html/ && \
echo "**** cleanup ****" && \
rm -rf \
/root/.composer \
/tmp/*
COPY root/ /
VOLUME /config
EXPOSE 80

998
Jenkinsfile vendored

File diff suppressed because it is too large Load Diff

0
LICENSE Executable file → Normal file
View File

307
README.md
View File

@ -1,12 +1,10 @@
<!-- DO NOT EDIT THIS FILE MANUALLY --> <!-- DO NOT EDIT THIS FILE MANUALLY -->
<!-- Please read the https://github.com/linuxserver/docker-bookstack/blob/master/.github/CONTRIBUTING.md --> <!-- Please read https://github.com/linuxserver/docker-bookstack/blob/master/.github/CONTRIBUTING.md -->
[![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io) [![linuxserver.io](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/linuxserver_medium.png)](https://linuxserver.io)
[![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!") [![Blog](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Blog)](https://blog.linuxserver.io "all the things you can do with our containers including How-To guides, opinions and much more!")
[![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://discord.gg/YWrKVTn "realtime support / chat with the community and the team.") [![Discord](https://img.shields.io/discord/354974912613449730.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Discord&logo=discord)](https://linuxserver.io/discord "realtime support / chat with the community and the team.")
[![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.") [![Discourse](https://img.shields.io/discourse/https/discourse.linuxserver.io/topics.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=discourse)](https://discourse.linuxserver.io "post on our community forum.")
[![Fleet](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Fleet)](https://fleet.linuxserver.io "an online web interface which displays all of our maintained images.")
[![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.") [![GitHub](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub&logo=github)](https://github.com/linuxserver "view the source for all of our repositories.")
[![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget") [![Open Collective](https://img.shields.io/opencollective/all/linuxserver.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=Supporters&logo=open%20collective)](https://opencollective.com/linuxserver "please consider helping us by either donating or contributing to our budget")
@ -21,109 +19,123 @@ The [LinuxServer.io](https://linuxserver.io) team brings you another container r
Find us at: Find us at:
* [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more! * [Blog](https://blog.linuxserver.io) - all the things you can do with our containers including How-To guides, opinions and much more!
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team. * [Discord](https://linuxserver.io/discord) - realtime support / chat with the community and the team.
* [Discourse](https://discourse.linuxserver.io) - post on our community forum. * [Discourse](https://discourse.linuxserver.io) - post on our community forum.
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
* [GitHub](https://github.com/linuxserver) - view the source for all of our repositories. * [GitHub](https://github.com/linuxserver) - view the source for all of our repositories.
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget * [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
# [linuxserver/bookstack](https://github.com/linuxserver/docker-bookstack) # [linuxserver/bookstack](https://github.com/linuxserver/docker-bookstack)
[![Scarf.io pulls](https://scarf.sh/installs-badge/linuxserver-ci/linuxserver%2Fbookstack?color=94398d&label-color=555555&logo-color=ffffff&style=for-the-badge&package-type=docker)](https://scarf.sh)
[![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-bookstack) [![GitHub Stars](https://img.shields.io/github/stars/linuxserver/docker-bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-bookstack)
[![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-bookstack/releases) [![GitHub Release](https://img.shields.io/github/release/linuxserver/docker-bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&logo=github)](https://github.com/linuxserver/docker-bookstack/releases)
[![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-bookstack/packages) [![GitHub Package Repository](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitHub%20Package&logo=github)](https://github.com/linuxserver/docker-bookstack/packages)
[![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/linuxserver.io/docker-bookstack/container_registry) [![GitLab Container Registry](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=GitLab%20Registry&logo=gitlab)](https://gitlab.com/linuxserver.io/docker-bookstack/container_registry)
[![Quay.io](https://img.shields.io/static/v1.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=linuxserver.io&message=Quay.io)](https://quay.io/repository/linuxserver.io/bookstack)
[![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/bookstack) [![Docker Pulls](https://img.shields.io/docker/pulls/linuxserver/bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=pulls&logo=docker)](https://hub.docker.com/r/linuxserver/bookstack)
[![Docker Stars](https://img.shields.io/docker/stars/linuxserver/bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/bookstack) [![Docker Stars](https://img.shields.io/docker/stars/linuxserver/bookstack.svg?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=stars&logo=docker)](https://hub.docker.com/r/linuxserver/bookstack)
[![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-bookstack%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/) [![Jenkins Build](https://img.shields.io/jenkins/build?labelColor=555555&logoColor=ffffff&style=for-the-badge&jobUrl=https%3A%2F%2Fci.linuxserver.io%2Fjob%2FDocker-Pipeline-Builders%2Fjob%2Fdocker-bookstack%2Fjob%2Fmaster%2F&logo=jenkins)](https://ci.linuxserver.io/job/Docker-Pipeline-Builders/job/docker-bookstack/job/master/)
[![LSIO CI](https://img.shields.io/badge/dynamic/yaml?color=94398d&labelColor=555555&logoColor=ffffff&style=for-the-badge&label=CI&query=CI&url=https%3A%2F%2Fci-tests.linuxserver.io%2Flinuxserver%2Fbookstack%2Flatest%2Fci-status.yml)](https://ci-tests.linuxserver.io/linuxserver/bookstack/latest/index.html)
[Bookstack](https://github.com/BookStackApp/BookStack) is a free and open source Wiki designed for creating beautiful documentation. Feautring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. [Bookstack](https://github.com/BookStackApp/BookStack) is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.
Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore. Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.
For more information on BookStack visit their website and check it out: https://www.bookstackapp.com For more information on BookStack visit their website and check it out: https://www.bookstackapp.com
[![bookstack](https://s3-us-west-2.amazonaws.com/linuxserver-docs/images/bookstack-logo500x500.png)](https://github.com/BookStackApp/BookStack) [![bookstack](https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bookstack-logo.png)](https://github.com/BookStackApp/BookStack)
## Supported Architectures ## Supported Architectures
Our images support multiple architectures such as `x86-64`, `arm64` and `armhf`. We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/). We utilise the docker manifest for multi-platform awareness. More information is available from docker [here](https://distribution.github.io/distribution/spec/manifest-v2-2/#manifest-list) and our announcement [here](https://blog.linuxserver.io/2019/02/21/the-lsio-pipeline-project/).
Simply pulling `ghcr.io/linuxserver/bookstack` should retrieve the correct image for your arch, but you can also pull specific arch images via tags. Simply pulling `lscr.io/linuxserver/bookstack:latest` should retrieve the correct image for your arch, but you can also pull specific arch images via tags.
The architectures supported by this image are: The architectures supported by this image are:
| Architecture | Tag | | Architecture | Available | Tag |
| :----: | --- | | :----: | :----: | ---- |
| x86-64 | amd64-latest | | x86-64 | ✅ | amd64-\<version tag\> |
| arm64 | arm64v8-latest | | arm64 | ✅ | arm64v8-\<version tag\> |
| armhf | arm32v7-latest |
## Application Setup ## Application Setup
The default username is admin@admin.com with the password of **password**, access the container at http://dockerhost:6875. The default username is admin@admin.com with the password of **password**, access the container at http://<host ip>:6875.
This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/. This application is dependent on a MariaDB database, be it one you already have or a new one. If you do not already have one, we provide an image here https://github.com/linuxserver/docker-mariadb.
If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the `APP_URL` environment variable is set to your external domain, or it will not work.
If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the `APP_URL` environment variable is set to your external domain, or it will not work Documentation for BookStack can be found at https://www.bookstackapp.com/docs/.
Documentation for BookStack can be found at https://www.bookstackapp.com/docs/ ### BookStack File & Directory Paths
This container ensures certain BookStack application files & folders, such as user file upload folders, are retained within the `/config` folder so that they are persistent & accessible when the `/config` container path is bound as a volume. There may be cases, when following the BookStack documentation, that you'll need to know how these files and folders are used relative to a non-container BookStack installation.
Below is a mapping of container `/config` paths to those relative within a BookStack install directory:
- **/config container path** => **BookStack relative path**
- `/config/www/.env` => `.env`
- `/config/log/bookstack/laravel.log` => `storage/logs/laravel.log`
- `/config/backups/` => `storage/backups/`
- `/config/www/files/` => `storage/uploads/files/`
- `/config/www/images/` => `storage/uploads/images/`
- `/config/www/themes/` => `themes/`
- `/config/www/uploads/` => `public/uploads/`
### Changing APP_URL
If you change the APP_URL after initial install, you should run the following line from your host terminal to update the database URL entries:
```shell
docker exec -it bookstack php /app/www/artisan bookstack:update-url ${OLD_URL} ${NEW_URL}
```
### Advanced Users (full control over the .env file) ### Advanced Users (full control over the .env file)
If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation.
When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.
#### PDF Rendering If you wish to use the extra functionality of BookStack such as email, LDAP and so on you will need to set additional environment variables or make your own .env file with guidance from the BookStack documentation.
[wkhtmltopdf](https://wkhtmltopdf.org/) is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/.
The path to wkhtmltopdf in this image to include in your .env file is `/usr/bin/wkhtmltopdf`. The container will copy an exemplary .env file to /config/www/.env on your host system for you to use.
## Read-Only Operation
This image can be run with a read-only container filesystem. For details please [read the docs](https://docs.linuxserver.io/misc/read-only/).
### Caveats
* `/tmp` must be mounted to tmpfs
## Usage ## Usage
Here are some example snippets to help you get started creating a container. To help you get started creating a container from this image you can either use docker-compose or the docker cli.
>[!NOTE]
>Unless a parameter is flagged as 'optional', it is *mandatory* and a value must be provided.
### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose)) ### docker-compose (recommended, [click here for more info](https://docs.linuxserver.io/general/docker-compose))
```yaml ```yaml
--- ---
version: "2"
services: services:
bookstack: bookstack:
image: ghcr.io/linuxserver/bookstack image: lscr.io/linuxserver/bookstack:latest
container_name: bookstack container_name: bookstack
environment: environment:
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=Etc/UTC
- APP_URL= - APP_URL=
- DB_HOST=bookstack_db - APP_KEY=
- DB_USER=bookstack - DB_HOST=
- DB_PASS=<yourdbpass> - DB_PORT=3306
- DB_DATABASE=bookstackapp - DB_USERNAME=
- DB_PASSWORD=
- DB_DATABASE=
- QUEUE_CONNECTION= #optional
volumes: volumes:
- /path/to/data:/config - /path/to/bookstack/config:/config
ports: ports:
- 6875:80 - 6875:80
restart: unless-stopped restart: unless-stopped
depends_on:
- bookstack_db
bookstack_db:
image: ghcr.io/linuxserver/mariadb
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=<yourdbpass>
- TZ=Europe/London
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=<yourdbpass>
volumes:
- /path/to/data:/config
restart: unless-stopped
``` ```
### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/)) ### docker cli ([click here for more info](https://docs.docker.com/engine/reference/commandline/cli/))
@ -133,32 +145,41 @@ docker run -d \
--name=bookstack \ --name=bookstack \
-e PUID=1000 \ -e PUID=1000 \
-e PGID=1000 \ -e PGID=1000 \
-e TZ=Etc/UTC \
-e APP_URL= \ -e APP_URL= \
-e DB_HOST=<yourdbhost> \ -e APP_KEY= \
-e DB_USER=<yourdbuser> \ -e DB_HOST= \
-e DB_PASS=<yourdbpass> \ -e DB_PORT=3306 \
-e DB_DATABASE=bookstackapp \ -e DB_USERNAME= \
-e DB_PASSWORD= \
-e DB_DATABASE= \
-e QUEUE_CONNECTION= `#optional` \
-p 6875:80 \ -p 6875:80 \
-v /path/to/data:/config \ -v /path/to/bookstack/config:/config \
--restart unless-stopped \ --restart unless-stopped \
ghcr.io/linuxserver/bookstack lscr.io/linuxserver/bookstack:latest
``` ```
## Parameters ## Parameters
Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container. Containers are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate `<external>:<internal>` respectively. For example, `-p 8080:80` would expose port `80` from inside the container to be accessible from the host's IP on port `8080` outside the container.
| Parameter | Function | | Parameter | Function |
| :----: | --- | | :----: | --- |
| `-p 80` | will map the container's port 80 to port 6875 on the host | | `-p 6875:80` | http/s web interface. |
| `-e PUID=1000` | for UserID - see below for explanation | | `-e PUID=1000` | for UserID - see below for explanation |
| `-e PGID=1000` | for GroupID - see below for explanation | | `-e PGID=1000` | for GroupID - see below for explanation |
| `-e APP_URL=` | for specifying the IP:port or URL your application will be accessed on (ie. `http://192.168.1.1:6875` or `https://bookstack.mydomain.com` | | `-e TZ=Etc/UTC` | specify a timezone to use, see this [list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List). |
| `-e DB_HOST=<yourdbhost>` | for specifying the database host | | `-e APP_URL=` | The protocol, IP/URL, and port that your application will be accessed on (ie. `http://192.168.1.1:6875` or `https://bookstack.mydomain.com` |
| `-e DB_USER=<yourdbuser>` | for specifying the database user | | `-e APP_KEY=` | Session encryption key. You will need to generate this with `docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey` |
| `-e DB_PASS=<yourdbpass>` | for specifying the database password | | `-e DB_HOST=` | The database instance hostname |
| `-e DB_DATABASE=bookstackapp` | for specifying the database to be used | | `-e DB_PORT=3306` | Database port |
| `-v /config` | this will store any uploaded data on the docker host | | `-e DB_USERNAME=` | Database user |
| `-e DB_PASSWORD=` | Database password (minimum 4 characters & non-alphanumeric passwords must be properly escaped.) |
| `-e DB_DATABASE=` | Database name |
| `-e QUEUE_CONNECTION=` | Set to `database` to enable async actions like sending email or triggering webhooks. See [documentation](https://www.bookstackapp.com/docs/admin/email-webhooks/#async-action-handling). |
| `-v /config` | Persistent config files |
| `--read-only=true` | Run container with a read-only filesystem. Please [read the docs](https://docs.linuxserver.io/misc/read-only/). |
## Environment variables from files (Docker secrets) ## Environment variables from files (Docker secrets)
@ -167,10 +188,10 @@ You can set any environment variable from a file by using a special prepend `FIL
As an example: As an example:
```bash ```bash
-e FILE__PASSWORD=/run/secrets/mysecretpassword -e FILE__MYVAR=/run/secrets/mysecretvariable
``` ```
Will set the environment variable `PASSWORD` based on the contents of the `/run/secrets/mysecretpassword` file. Will set the environment variable `MYVAR` based on the contents of the `/run/secrets/mysecretvariable` file.
## Umask for running applications ## Umask for running applications
@ -179,15 +200,20 @@ Keep in mind umask is not chmod it subtracts from permissions based on it's valu
## User / Group Identifiers ## User / Group Identifiers
When using volumes (`-v` flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`. When using volumes (`-v` flags), permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user `PUID` and group `PGID`.
Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic. Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.
In this instance `PUID=1000` and `PGID=1000`, to find yours use `id user` as below: In this instance `PUID=1000` and `PGID=1000`, to find yours use `id your_user` as below:
```bash ```bash
$ id username id your_user
uid=1000(dockeruser) gid=1000(dockergroup) groups=1000(dockergroup) ```
Example output:
```text
uid=1000(your_user) gid=1000(your_user) groups=1000(your_user)
``` ```
## Docker Mods ## Docker Mods
@ -198,53 +224,101 @@ We publish various [Docker Mods](https://github.com/linuxserver/docker-mods) to
## Support Info ## Support Info
* Shell access whilst the container is running: `docker exec -it bookstack /bin/bash` * Shell access whilst the container is running:
* To monitor the logs of the container in realtime: `docker logs -f bookstack`
* container version number ```bash
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' bookstack` docker exec -it bookstack /bin/bash
* image version number ```
* `docker inspect -f '{{ index .Config.Labels "build_version" }}' ghcr.io/linuxserver/bookstack`
* To monitor the logs of the container in realtime:
```bash
docker logs -f bookstack
```
* Container version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' bookstack
```
* Image version number:
```bash
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/bookstack:latest
```
## Updating Info ## Updating Info
Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (ie. nextcloud, plex), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image. Most of our images are static, versioned, and require an image update and container recreation to update the app inside. With some exceptions (noted in the relevant readme.md), we do not recommend or support updating apps inside the container. Please consult the [Application Setup](#application-setup) section above to see if it is recommended for the image.
Below are the instructions for updating containers: Below are the instructions for updating containers:
### Via Docker Compose ### Via Docker Compose
* Update all images: `docker-compose pull` * Update images:
* or update a single image: `docker-compose pull bookstack` * All images:
* Let compose update all containers as necessary: `docker-compose up -d`
* or update a single container: `docker-compose up -d bookstack` ```bash
* You can also remove the old dangling images: `docker image prune` docker-compose pull
```
* Single image:
```bash
docker-compose pull bookstack
```
* Update containers:
* All containers:
```bash
docker-compose up -d
```
* Single container:
```bash
docker-compose up -d bookstack
```
* You can also remove the old dangling images:
```bash
docker image prune
```
### Via Docker Run ### Via Docker Run
* Update the image: `docker pull ghcr.io/linuxserver/bookstack` * Update the image:
* Stop the running container: `docker stop bookstack`
* Delete the container: `docker rm bookstack` ```bash
docker pull lscr.io/linuxserver/bookstack:latest
```
* Stop the running container:
```bash
docker stop bookstack
```
* Delete the container:
```bash
docker rm bookstack
```
* Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved) * Recreate a new container with the same docker run parameters as instructed above (if mapped correctly to a host folder, your `/config` folder and settings will be preserved)
* You can also remove the old dangling images: `docker image prune` * You can also remove the old dangling images:
### Via Watchtower auto-updater (only use if you don't remember the original parameters) ```bash
docker image prune
* Pull the latest image at its tag and replace it with the same env variables in one run: ```
```bash
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--run-once bookstack
```
* You can also remove the old dangling images: `docker image prune`
**Note:** We do not endorse the use of Watchtower as a solution to automated updates of existing Docker containers. In fact we generally discourage automated updates. However, this is a useful tool for one-time manual updates of containers where you have forgotten the original parameters. In the long term, we highly recommend using [Docker Compose](https://docs.linuxserver.io/general/docker-compose).
### Image Update Notifications - Diun (Docker Image Update Notifier) ### Image Update Notifications - Diun (Docker Image Update Notifier)
* We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported. >[!TIP]
>We recommend [Diun](https://crazymax.dev/diun/) for update notifications. Other tools that automatically update containers unattended are not recommended or supported.
## Building locally ## Building locally
@ -256,19 +330,40 @@ cd docker-bookstack
docker build \ docker build \
--no-cache \ --no-cache \
--pull \ --pull \
-t ghcr.io/linuxserver/bookstack:latest . -t lscr.io/linuxserver/bookstack:latest .
``` ```
The ARM variants can be built on x86_64 hardware using `multiarch/qemu-user-static` The ARM variants can be built on x86_64 hardware and vice versa using `lscr.io/linuxserver/qemu-static`
```bash ```bash
docker run --rm --privileged multiarch/qemu-user-static:register --reset docker run --rm --privileged lscr.io/linuxserver/qemu-static --reset
``` ```
Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`. Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64`.
## Versions ## Versions
* **28.12.25:** - Rebase to Alpine 3.23.
* **05.07.25:** - Rebase to Alpine 3.22.
* **04.01.25:** - Add php-opcache.
* **17.12.24:** - Rebase to Alpine 3.21.
* **11.10.24:** - Default to environment config over .env file config.
* **06.09.24:** - Add php-exif for reading image EXIF data.
* **27.05.24:** - Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings.
* **25.01.24:** - Existing users should update: site-confs/default.conf - Cleanup default site conf.
* **23.12.23:** - Rebase to Alpine 3.19 with php 8.3.
* **31.10.23:** - Further sanitize sed replace.
* **07.06.23:** - Add mariadb-client for bookstack-system-cli support.
* **25.05.23:** - Rebase to Alpine 3.18, deprecate armhf.
* **13.04.23:** - Move ssl.conf include to default.conf.
* **01.03.23:** - Add php iconv.
* **19.01.23:** - Rebase to alpine 3.17 with php8.1.
* **16.01.23:** - Wrap `.env` values in quotes.
* **05.01.23:** - Fix db password setting (sed escape `&`).
* **21.12.22:** - Update db info in .env file when env vars are updated.
* **10.10.22:** - Remove password escape logic which caused problems for a small subset of users.
* **20.08.22:** - Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base)).
* **14.03.22:** - Add symlinks for theme support.
* **11.07.21:** - Rebase to Alpine 3.14. * **11.07.21:** - Rebase to Alpine 3.14.
* **12.01.21:** - Remove unused requirement, as of release 0.31.0. * **12.01.21:** - Remove unused requirement, as of release 0.31.0.
* **17.12.20:** - Make APP_URL var required (upstream changes). * **17.12.20:** - Make APP_URL var required (upstream changes).

View File

@ -19,11 +19,11 @@ repo_vars:
- PR_DOCKERHUB_IMAGE = 'lspipepr/bookstack' - PR_DOCKERHUB_IMAGE = 'lspipepr/bookstack'
- DIST_IMAGE = 'alpine' - DIST_IMAGE = 'alpine'
- MULTIARCH = 'true' - MULTIARCH = 'true'
- CI = 'true' - CI = 'false'
- CI_WEB = 'false' - CI_WEB = 'false'
- CI_PORT = '80' - CI_PORT = '80'
- CI_SSL = 'false' - CI_SSL = 'false'
- CI_DELAY = '30' - CI_DELAY = '60'
- CI_DOCKERENV='TEST_RUN=1' - CI_DOCKERENV=''
- CI_AUTH = 'user:password' - CI_AUTH = ''
- CI_WEBPATH = '' - CI_WEBPATH = ''

View File

@ -1,195 +1,296 @@
alpine-baselayout-3.2.0-r15 NAME VERSION TYPE
alpine-keys-2.3-r1 Hidden Input 1, 0, 0, 0 binary
alsa-lib-1.2.5-r2 acl-libs 2.3.2-r1 apk
apache2-utils-2.4.48-r0 alpine-baselayout 3.7.1-r8 apk
apk-tools-2.12.5-r1 alpine-baselayout-data 3.7.1-r8 apk
apr-1.7.0-r0 alpine-keys 2.6-r0 apk
apr-util-1.6.1-r7 alpine-release 3.23.3-r0 apk
argon2-libs-20190702-r1 aom-libs 3.13.1-r1 apk
avahi-libs-0.8-r4 apache2-utils 2.4.66-r0 apk
bash-5.1.4-r0 apk-tools 3.0.4-r0 apk
brotli-libs-1.0.9-r5 apr 1.7.6-r0 apk
busybox-1.33.1-r3 apr-util 1.6.3-r2 apk
ca-certificates-20191127-r5 argon2-libs 20190702-r5 apk
ca-certificates-bundle-20191127-r5 aws/aws-crt-php v1.2.7 php-composer
cairo-1.16.0-r3 aws/aws-sdk-php 3.369.36 php-composer
cdparanoia-libs-10.2-r9 bacon/bacon-qr-code v3.0.3 php-composer
composer-2.1.3-r0 bash 5.3.3-r1 apk
coreutils-8.32-r2 brick/math 0.14.8 php-composer
cups-libs-2.3.3-r2 brotli-libs 1.2.0-r0 apk
curl-7.77.0-r1 busybox 1.37.0-r30 apk
dbus-libs-1.12.20-r2 busybox-binsh 1.37.0-r30 apk
encodings-1.0.5-r0 c-ares 1.34.6-r0 apk
eudev-libs-3.2.10-r0 ca-certificates 20251003-r0 apk
expat-2.4.1-r0 ca-certificates-bundle 20251003-r0 apk
fontconfig-2.13.1-r4 carbonphp/carbon-doctrine-types 3.2.0 php-composer
freetype-2.10.4-r1 catatonit 0.2.1-r0 apk
fribidi-1.0.10-r0 composer 2.9.5 binary
gdbm-1.19-r0 coreutils 9.8-r1 apk
git-2.32.0-r0 coreutils-env 9.8-r1 apk
glib-2.68.2-r0 coreutils-fmt 9.8-r1 apk
gmp-6.2.1-r0 coreutils-sha512sum 9.8-r1 apk
gnutls-3.7.1-r0 curl 8.17.0-r1 apk
graphite2-1.3.14-r0 dasprid/enum 1.0.7 php-composer
gst-plugins-base-1.18.4-r0 dbus-libs 1.16.2-r1 apk
gstreamer-1.18.4-r0 dflydev/dot-access-data v3.0.3 php-composer
harfbuzz-2.8.1-r0 doctrine/inflector 2.1.0 php-composer
hicolor-icon-theme-0.17-r1 doctrine/lexer 3.0.1 php-composer
hyphen-2.8.8-r1 dompdf/dompdf v3.1.4 php-composer
icu-libs-67.1-r2 dompdf/php-font-lib 1.0.2 php-composer
libacl-2.2.53-r0 dompdf/php-svg-lib 1.0.2 php-composer
libattr-2.5.1-r0 dragonmantank/cron-expression v3.6.0 php-composer
libblkid-2.37-r0 egulias/email-validator 4.0.4 php-composer
libbsd-0.11.3-r0 encodings 1.1.0-r0 apk
libbz2-1.0.8-r1 ezyang/htmlpurifier v4.19.0 php-composer
libc-utils-0.7.2-r3 fakerphp/faker v1.24.1 php-composer
libcap-2.50-r0 filp/whoops 2.18.4 php-composer
libcrypto1.1-1.1.1k-r0 findutils 4.10.0-r0 apk
libcurl-7.77.0-r1 firebase/php-jwt v7.0.2 php-composer
libdrm-2.4.106-r0 font-freefont 20120503-r4 apk
libedit-20210216.3.1-r0 fontconfig 2.17.1-r0 apk
libevdev-1.11.0-r1 freetype 2.14.1-r0 apk
libevent-2.1.12-r2 fruitcake/php-cors v1.4.0 php-composer
libffi-3.3-r2 gdbm 1.26-r0 apk
libfontenc-1.1.4-r0 git 2.52.0-r0 apk
libgcc-10.3.1_git20210424-r2 git-init-template 2.52.0-r0 apk
libgcrypt-1.9.3-r0 glib 2.86.3-r0 apk
libgpg-error-1.42-r0 graham-campbell/result-type v1.1.4 php-composer
libice-1.0.10-r0 guzzlehttp/guzzle 7.10.0 php-composer
libinput-libs-1.18.0-r0 guzzlehttp/promises 2.3.0 php-composer
libintl-0.21-r0 guzzlehttp/psr7 2.8.0 php-composer
libjpeg-turbo-2.1.0-r0 guzzlehttp/uri-template v1.0.5 php-composer
libldap-2.4.58-r0 hamcrest/hamcrest-php v2.1.1 php-composer
libmagic-5.40-r1 iamcal/sql-parser v0.7 php-composer
libmd-1.0.3-r0 icu-data-full 76.1-r1 apk
libmemcached-libs-1.0.18-r4 icu-libs 76.1-r1 apk
libmount-2.37-r0 intervention/gif 4.2.4 php-composer
libogg-1.3.5-r0 intervention/image 3.11.6 php-composer
libpciaccess-0.16-r0 itsgoingd/clockwork v5.3.5 php-composer
libpcre2-16-10.36-r0 jq 1.8.1-r0 apk
libpng-1.6.37-r1 knplabs/knp-snappy v1.6.0 php-composer
libproc-3.3.17-r0 larastan/larastan v3.9.2 php-composer
libressl3.3-libcrypto-3.3.3-r0 laravel/framework v12.52.0 php-composer
libressl3.3-libssl-3.3.3-r0 laravel/prompts v0.3.13 php-composer
libretls-3.3.3-r2 laravel/serializable-closure v2.0.9 php-composer
libsasl-2.1.27-r12 laravel/socialite v5.24.2 php-composer
libseccomp-2.5.1-r2 laravel/tinker v2.11.1 php-composer
libsm-1.2.3-r0 league/commonmark 2.8.0 php-composer
libssl1.1-1.1.1k-r0 league/config v1.2.0 php-composer
libstdc++-10.3.1_git20210424-r2 league/flysystem 3.31.0 php-composer
libtasn1-4.17.0-r0 league/flysystem-aws-s3-v3 3.31.0 php-composer
libtheora-1.1.1-r16 league/flysystem-local 3.31.0 php-composer
libunistring-0.9.10-r1 league/html-to-markdown 5.1.1 php-composer
libuuid-2.37-r0 league/mime-type-detection 1.16.0 php-composer
libvorbis-1.3.7-r0 league/oauth1-client v1.11.0 php-composer
libwebp-1.2.0-r2 league/oauth2-client 2.9.0 php-composer
libx11-1.7.2-r0 league/uri 7.8.0 php-composer
libxau-1.0.9-r0 league/uri-interfaces 7.8.0 php-composer
libxcb-1.14-r2 libapk 3.0.4-r0 apk
libxcomposite-0.4.5-r0 libattr 2.5.2-r2 apk
libxdmcp-1.1.3-r0 libavif 1.3.0-r0 apk
libxext-1.3.4-r0 libblkid 2.41.2-r0 apk
libxfixes-6.0.0-r0 libbsd 0.12.2-r0 apk
libxft-2.3.3-r0 libbz2 1.0.8-r6 apk
libxkbcommon-1.2.1-r0 libcrypto3 3.5.5-r0 apk
libxkbcommon-x11-1.2.1-r0 libcurl 8.17.0-r1 apk
libxml2-2.9.12-r1 libdav1d 1.5.2-r0 apk
libxpm-3.5.13-r0 libeconf 0.8.3-r0 apk
libxrender-0.9.10-r3 libedit 20251016.3.1-r0 apk
libxshmfence-1.3-r1 libevent 2.1.12-r8 apk
libxslt-1.1.34-r1 libexpat 2.7.4-r0 apk
libxt-1.2.1-r0 libffi 3.5.2-r0 apk
libxv-1.0.11-r2 libfontenc 1.1.8-r0 apk
libxxf86vm-1.1.4-r2 libgcc 15.2.0-r2 apk
libzip-1.7.3-r2 libice 1.1.2-r0 apk
linux-pam-1.5.1-r1 libidn2 2.3.8-r0 apk
logrotate-3.18.1-r0 libintl 0.24.1-r1 apk
memcached-1.6.9-r0 libjpeg-turbo 3.1.2-r0 apk
mesa-21.1.2-r0 libldap 2.6.10-r0 apk
mesa-egl-21.1.2-r0 libmd 1.1.0-r0 apk
mesa-gbm-21.1.2-r0 libmemcached-libs 1.1.4-r1 apk
mesa-gl-21.1.2-r0 libmount 2.41.2-r0 apk
mesa-glapi-21.1.2-r0 libncursesw 6.5_p20251123-r0 apk
mkfontscale-1.2.1-r1 libpcre2-16 10.47-r0 apk
mtdev-1.1.6-r0 libpng 1.6.54-r0 apk
musl-1.2.2-r3 libproc2 4.0.5-r0 apk
musl-utils-1.2.2-r3 libpsl 0.21.5-r3 apk
nano-5.7-r2 libsasl 2.1.28-r9 apk
ncurses-libs-6.2_p20210612-r0 libseccomp 2.6.0-r1 apk
ncurses-terminfo-base-6.2_p20210612-r0 libsharpyuv 1.6.0-r0 apk
netcat-openbsd-1.130-r2 libsm 1.2.6-r0 apk
nettle-3.7.2-r0 libssl3 3.5.5-r0 apk
nghttp2-libs-1.43.0-r0 libstdc++ 15.2.0-r2 apk
nginx-1.20.1-r3 libunistring 1.4.1-r0 apk
oniguruma-6.9.7.1-r0 libuuid 2.41.2-r0 apk
openssl-1.1.1k-r0 libwebp 1.6.0-r0 apk
opus-1.3.1-r1 libx11 1.8.12-r1 apk
orc-0.4.32-r0 libxau 1.0.12-r0 apk
p11-kit-0.23.22-r0 libxcb 1.17.0-r1 apk
pango-1.48.5-r0 libxdmcp 1.1.5-r1 apk
pcre-8.44-r0 libxext 1.3.6-r2 apk
pcre2-10.36-r0 libxml2 2.13.9-r0 apk
php7-7.4.21-r0 libxpm 3.5.17-r0 apk
php7-common-7.4.21-r0 libxt 1.3.1-r0 apk
php7-ctype-7.4.21-r0 libyuv 0.0.1887.20251502-r1 apk
php7-curl-7.4.21-r0 libzip 1.11.4-r1 apk
php7-dom-7.4.21-r0 linux-pam 1.7.1-r2 apk
php7-fileinfo-7.4.21-r0 logrotate 3.22.0-r0 apk
php7-fpm-7.4.21-r0 mariadb-client 11.4.9-r0 apk
php7-gd-7.4.21-r0 mariadb-common 11.4.9-r0 apk
php7-iconv-7.4.21-r0 masterminds/html5 2.10.0 php-composer
php7-json-7.4.21-r0 memcached 1.6.39-r0 apk
php7-ldap-7.4.21-r0 mkfontscale 1.2.3-r1 apk
php7-mbstring-7.4.21-r0 mockery/mockery 1.6.12 php-composer
php7-mysqlnd-7.4.21-r0 monolog/monolog 3.10.0 php-composer
php7-openssl-7.4.21-r0 mtdowling/jmespath.php 2.8.0 php-composer
php7-pdo-7.4.21-r0 musl 1.2.5-r21 apk
php7-pdo_mysql-7.4.21-r0 musl-utils 1.2.5-r21 apk
php7-pecl-igbinary-3.2.3-r0 myclabs/deep-copy 1.13.4 php-composer
php7-pecl-memcached-3.1.5-r2 nano 8.7-r0 apk
php7-phar-7.4.21-r0 ncurses-terminfo-base 6.5_p20251123-r0 apk
php7-session-7.4.21-r0 nesbot/carbon 3.11.1 php-composer
php7-simplexml-7.4.21-r0 netcat-openbsd 1.234.1-r0 apk
php7-tokenizer-7.4.21-r0 nette/schema v1.3.4 php-composer
php7-xml-7.4.21-r0 nette/utils v4.1.3 php-composer
php7-xmlwriter-7.4.21-r0 nghttp2-libs 1.68.0-r0 apk
php7-zip-7.4.21-r0 nghttp3 1.13.1-r0 apk
pixman-0.40.0-r2 nginx 1.28.2-r0 apk
pkgconf-1.7.4-r0 nikic/php-parser v5.7.0 php-composer
popt-1.18-r0 nunomaduro/collision v8.9.1 php-composer
procps-3.3.17-r0 nunomaduro/termwind v2.4.0 php-composer
qt5-qtbase-5.15.3_git20210406-r0 onelogin/php-saml 4.3.1 php-composer
qt5-qtbase-x11-5.15.3_git20210406-r0 oniguruma 6.9.10-r0 apk
qt5-qtdeclarative-5.15.3_git20210531-r0 openssl 3.5.5-r0 apk
qt5-qtlocation-5.15.3_git20201109-r0 paragonie/constant_time_encoding v3.1.3 php-composer
qt5-qtsensors-5.15.3_git20201028-r1 paragonie/random_compat v9.99.100 php-composer
qt5-qtsvg-5.15.3_git20200406-r0 pcre2 10.47-r0 apk
qt5-qtwayland-5.15.3_git20210510-r0 phar-io/manifest 2.0.4 php-composer
qt5-qtwebchannel-5.15.3_git20201028-r0 phar-io/version 3.2.1 php-composer
qt5-qtwebkit-5.212.0_alpha4-r14 php85 8.5.2-r0 apk
readline-8.1.0-r0 php85-common 8.5.2-r0 apk
s6-ipcserver-2.10.0.3-r0 php85-ctype 8.5.2-r0 apk
scanelf-1.3.2-r0 php85-curl 8.5.2-r0 apk
shadow-4.8.1-r0 php85-dom 8.5.2-r0 apk
skalibs-2.10.0.3-r0 php85-exif 8.5.2-r0 apk
sqlite-libs-3.35.5-r0 php85-fileinfo 8.5.2-r0 apk
ssl_client-1.33.1-r3 php85-fpm 8.5.2-r0 apk
tar-1.34-r0 php85-gd 8.5.2-r0 apk
ttf-freefont-20120503-r1 php85-iconv 8.5.2-r0 apk
tzdata-2021a-r0 php85-ldap 8.5.2-r0 apk
utmps-0.1.0.2-r0 php85-mbstring 8.5.2-r0 apk
wayland-libs-client-1.19.0-r0 php85-mysqlnd 8.5.2-r0 apk
wayland-libs-cursor-1.19.0-r0 php85-openssl 8.5.2-r0 apk
wayland-libs-egl-1.19.0-r0 php85-pdo 8.5.2-r0 apk
wayland-libs-server-1.19.0-r0 php85-pdo_mysql 8.5.2-r0 apk
wkhtmltopdf-0.12.6-r0 php85-pecl-igbinary 3.2.17_rc1-r0 apk
xcb-util-0.4.0-r3 php85-pecl-memcached 3.4.0-r0 apk
xcb-util-image-0.4.0-r1 php85-pecl-msgpack 3.0.0-r0 apk
xcb-util-keysyms-0.4.0-r1 php85-phar 8.5.2-r0 apk
xcb-util-renderutil-0.3.9-r1 php85-session 8.5.2-r0 apk
xcb-util-wm-0.4.1-r1 php85-simplexml 8.5.2-r0 apk
xkeyboard-config-2.33-r0 php85-sockets 8.5.2-r0 apk
xz-5.2.5-r0 php85-tokenizer 8.5.2-r0 apk
xz-libs-5.2.5-r0 php85-xml 8.5.2-r0 apk
zlib-1.2.11-r3 php85-xmlwriter 8.5.2-r0 apk
zstd-libs-1.4.9-r1 php85-zip 8.5.2-r0 apk
phpoption/phpoption 1.9.5 php-composer
phpseclib/phpseclib 3.0.49 php-composer
phpstan/phpstan 2.1.39 php-composer
phpunit/php-code-coverage 11.0.12 php-composer
phpunit/php-file-iterator 5.1.1 php-composer
phpunit/php-invoker 5.0.1 php-composer
phpunit/php-text-template 4.0.1 php-composer
phpunit/php-timer 7.0.1 php-composer
phpunit/phpunit 11.5.55 php-composer
popt 1.19-r4 apk
pragmarx/google2fa v9.0.0 php-composer
predis/predis v3.4.0 php-composer
procps-ng 4.0.5-r0 apk
psr/clock 1.0.0 php-composer
psr/container 2.0.2 php-composer
psr/event-dispatcher 1.0.0 php-composer
psr/http-client 1.0.3 php-composer
psr/http-factory 1.1.0 php-composer
psr/http-message 2.0 php-composer
psr/log 3.0.2 php-composer
psr/simple-cache 3.0.0 php-composer
psy/psysh v0.12.20 php-composer
qt5-qtbase 5.15.10_git20230714-r4 apk
ralouphie/getallheaders 3.0.3 php-composer
ramsey/collection 2.1.1 php-composer
ramsey/uuid 4.9.2 php-composer
readline 8.3.1-r0 apk
robrichards/xmlseclibs 3.1.4 php-composer
sabberworm/php-css-parser v9.1.0 php-composer
scanelf 1.3.8-r2 apk
sebastian/cli-parser 3.0.2 php-composer
sebastian/code-unit 3.0.3 php-composer
sebastian/code-unit-reverse-lookup 4.0.1 php-composer
sebastian/comparator 6.3.3 php-composer
sebastian/complexity 4.0.1 php-composer
sebastian/diff 6.0.2 php-composer
sebastian/environment 7.2.1 php-composer
sebastian/exporter 6.3.2 php-composer
sebastian/global-state 7.0.2 php-composer
sebastian/lines-of-code 3.0.1 php-composer
sebastian/object-enumerator 6.0.1 php-composer
sebastian/object-reflector 4.0.1 php-composer
sebastian/recursion-context 6.0.3 php-composer
sebastian/type 5.1.3 php-composer
sebastian/version 5.0.2 php-composer
shadow 4.18.0-r0 apk
skalibs-libs 2.14.4.0-r0 apk
socialiteproviders/discord 4.2.0 php-composer
socialiteproviders/gitlab 4.1.0 php-composer
socialiteproviders/manager v4.8.1 php-composer
socialiteproviders/microsoft-azure 5.2.0 php-composer
socialiteproviders/okta 4.5.0 php-composer
socialiteproviders/twitch 5.4.0 php-composer
squizlabs/php_codesniffer 4.0.1 php-composer
ssddanbrown/asserthtml v3.1.0 php-composer
ssddanbrown/htmldiff v2.0.0 php-composer
ssl_client 1.37.0-r30 apk
staabm/side-effects-detector 1.0.5 php-composer
symfony/clock v7.4.0 php-composer
symfony/console v7.4.4 php-composer
symfony/css-selector v7.4.0 php-composer
symfony/deprecation-contracts v3.6.0 php-composer
symfony/dom-crawler v7.4.4 php-composer
symfony/error-handler v7.4.4 php-composer
symfony/event-dispatcher v7.4.4 php-composer
symfony/event-dispatcher-contracts v3.6.0 php-composer
symfony/filesystem v7.4.0 php-composer
symfony/finder v7.4.5 php-composer
symfony/http-foundation v7.4.5 php-composer
symfony/http-kernel v7.4.5 php-composer
symfony/mailer v7.4.4 php-composer
symfony/mime v7.4.5 php-composer
symfony/polyfill-ctype v1.33.0 php-composer
symfony/polyfill-intl-grapheme v1.33.0 php-composer
symfony/polyfill-intl-idn v1.33.0 php-composer
symfony/polyfill-intl-normalizer v1.33.0 php-composer
symfony/polyfill-mbstring v1.33.0 php-composer
symfony/polyfill-php80 v1.33.0 php-composer
symfony/polyfill-php83 v1.33.0 php-composer
symfony/polyfill-php84 v1.33.0 php-composer
symfony/polyfill-php85 v1.33.0 php-composer
symfony/polyfill-uuid v1.33.0 php-composer
symfony/process v7.4.5 php-composer
symfony/routing v7.4.4 php-composer
symfony/service-contracts v3.6.1 php-composer
symfony/string v7.4.4 php-composer
symfony/translation v7.4.4 php-composer
symfony/translation-contracts v3.6.1 php-composer
symfony/uid v7.4.4 php-composer
symfony/var-dumper v7.4.4 php-composer
thecodingmachine/safe v3.4.0 php-composer
theseer/tokenizer 1.3.1 php-composer
tijsverkoyen/css-to-inline-styles v2.4.0 php-composer
tzdata 2025c-r0 apk
utmps-libs 0.1.3.1-r0 apk
vlucas/phpdotenv v5.6.3 php-composer
voku/portable-ascii 2.0.3 php-composer
xemlock/htmlpurifier-html5 v0.1.12 php-composer
xz-libs 5.8.2-r0 apk
zlib 1.3.1-r2 apk
zstd-libs 1.5.7-r2 apk

View File

@ -3,117 +3,173 @@
# project information # project information
project_name: bookstack project_name: bookstack
project_url: "https://github.com/BookStackApp/BookStack" project_url: "https://github.com/BookStackApp/BookStack"
project_logo: "https://s3-us-west-2.amazonaws.com/linuxserver-docs/images/bookstack-logo500x500.png" project_logo: "https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bookstack-logo.png"
project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}" project_lsio_github_repo_url: "https://github.com/linuxserver/docker-{{ project_name }}"
project_categories: "Content Management"
project_blurb: | project_blurb: |
[{{ project_name|capitalize }}]({{ project_url }}) is a free and open source Wiki designed for creating beautiful documentation. Feautring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease. [{{ project_name|capitalize }}]({{ project_url }}) is a free and open source Wiki designed for creating beautiful documentation. Featuring a simple, but powerful WYSIWYG editor it allows for teams to create detailed and useful documentation with ease.
Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore. Powered by SQL and including a Markdown editor for those who prefer it, BookStack is geared towards making documentation more of a pleasure than a chore.
For more information on BookStack visit their website and check it out: https://www.bookstackapp.com For more information on BookStack visit their website and check it out: https://www.bookstackapp.com
# supported architectures # supported architectures
available_architectures: available_architectures:
- { arch: "{{ arch_x86_64 }}", tag: "amd64-latest"} - {arch: "{{ arch_x86_64 }}", tag: "amd64-latest"}
- { arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"} - {arch: "{{ arch_arm64 }}", tag: "arm64v8-latest"}
- { arch: "{{ arch_armhf }}", tag: "arm32v7-latest"}
# container parameters # container parameters
param_container_name: "{{ project_name }}" param_container_name: "{{ project_name }}"
param_usage_include_vols: true param_usage_include_vols: true
param_volumes: param_volumes:
- { vol_path: "/config", vol_host_path: "/path/to/data", desc: "this will store any uploaded data on the docker host" } - {vol_path: "/config", vol_host_path: "/path/to/{{ project_name }}/config", desc: "Persistent config files"}
param_usage_include_env: true param_usage_include_env: true
param_env_vars: param_env_vars:
- { env_var: "APP_URL", env_value: "", desc: "for specifying the IP:port or URL your application will be accessed on (ie. `http://192.168.1.1:6875` or `https://bookstack.mydomain.com`"} - {env_var: "APP_URL", env_value: "", desc: "The protocol, IP/URL, and port that your application will be accessed on (ie. `http://192.168.1.1:6875` or `https://bookstack.mydomain.com`"}
- { env_var: "DB_HOST", env_value: "<yourdbhost>", desc: "for specifying the database host" } - {env_var: "APP_KEY", env_value: "", desc: "Session encryption key. You will need to generate this with `docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey`"}
- { env_var: "DB_USER", env_value: "<yourdbuser>", desc: "for specifying the database user" } - {env_var: "DB_HOST", env_value: "", desc: "The database instance hostname"}
- { env_var: "DB_PASS", env_value: "<yourdbpass>", desc: "for specifying the database password" } - {env_var: "DB_PORT", env_value: "3306", desc: "Database port"}
- { env_var: "DB_DATABASE", env_value: "bookstackapp", desc: "for specifying the database to be used" } - {env_var: "DB_USERNAME", env_value: "", desc: "Database user"}
- {env_var: "DB_PASSWORD", env_value: "", desc: "Database password (minimum 4 characters & non-alphanumeric passwords must be properly escaped.)"}
- {env_var: "DB_DATABASE", env_value: "", desc: "Database name"}
param_usage_include_ports: true param_usage_include_ports: true
param_ports: param_ports:
- { external_port: "6875", internal_port: "80", port_desc: "will map the container's port 80 to port 6875 on the host" } - {external_port: "6875", internal_port: "80", port_desc: "http/s web interface."}
opt_param_usage_include_env: true
opt_param_usage_include_env: false
opt_param_env_vars: opt_param_env_vars:
- {env_var: "QUEUE_CONNECTION", env_value: "", desc: "Set to `database` to enable async actions like sending email or triggering webhooks. See [documentation](https://www.bookstackapp.com/docs/admin/email-webhooks/#async-action-handling)."}
custom_compose: | readonly_supported: true
--- readonly_message: |
version: "2" * `/tmp` must be mounted to tmpfs
services:
bookstack:
image: ghcr.io/linuxserver/bookstack
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- APP_URL=
- DB_HOST=bookstack_db
- DB_USER=bookstack
- DB_PASS=<yourdbpass>
- DB_DATABASE=bookstackapp
volumes:
- /path/to/data:/config
ports:
- 6875:80
restart: unless-stopped
depends_on:
- bookstack_db
bookstack_db:
image: ghcr.io/linuxserver/mariadb
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=<yourdbpass>
- TZ=Europe/London
- MYSQL_DATABASE=bookstackapp
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=<yourdbpass>
volumes:
- /path/to/data:/config
restart: unless-stopped
# application setup block # application setup block
app_setup_block_enabled: true app_setup_block_enabled: true
app_setup_block: | app_setup_block: |
The default username is admin@admin.com with the password of **password**, access the container at http://<host ip>:6875.
The default username is admin@admin.com with the password of **password**, access the container at http://dockerhost:6875. This application is dependent on a MariaDB database, be it one you already have or a new one. If you do not already have one, we provide an image here https://github.com/linuxserver/docker-mariadb.
This application is dependent on a MySQL database be it one you already have or a new one. If you do not already have one, set up our MariaDB container here https://hub.docker.com/r/linuxserver/mariadb/. If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the `APP_URL` environment variable is set to your external domain, or it will not work.
Documentation for BookStack can be found at https://www.bookstackapp.com/docs/.
If you intend to use this application behind a subfolder reverse proxy, such as our SWAG container or Traefik you will need to make sure that the `APP_URL` environment variable is set to your external domain, or it will not work
Documentation for BookStack can be found at https://www.bookstackapp.com/docs/ ### BookStack File & Directory Paths
This container ensures certain BookStack application files & folders, such as user file upload folders, are retained within the `/config` folder so that they are persistent & accessible when the `/config` container path is bound as a volume. There may be cases, when following the BookStack documentation, that you'll need to know how these files and folders are used relative to a non-container BookStack installation.
Below is a mapping of container `/config` paths to those relative within a BookStack install directory:
- **/config container path** => **BookStack relative path**
- `/config/www/.env` => `.env`
- `/config/log/bookstack/laravel.log` => `storage/logs/laravel.log`
- `/config/backups/` => `storage/backups/`
- `/config/www/files/` => `storage/uploads/files/`
- `/config/www/images/` => `storage/uploads/images/`
- `/config/www/themes/` => `themes/`
- `/config/www/uploads/` => `public/uploads/`
### Changing APP_URL
If you change the APP_URL after initial install, you should run the following line from your host terminal to update the database URL entries:
```shell
docker exec -it bookstack php /app/www/artisan bookstack:update-url ${OLD_URL} ${NEW_URL}
```
### Advanced Users (full control over the .env file) ### Advanced Users (full control over the .env file)
If you wish to use the extra functionality of BookStack such as email, Memcache, LDAP and so on you will need to make your own .env file with guidance from the BookStack documentation.
When you create the container, do not set any arguments for any SQL settings. The container will copy an exemplary .env file to /config/www/.env on your host system for you to edit.
#### PDF Rendering
[wkhtmltopdf](https://wkhtmltopdf.org/) is available to use as an alternative PDF rendering generator as described at https://www.bookstackapp.com/docs/admin/pdf-rendering/.
The path to wkhtmltopdf in this image to include in your .env file is `/usr/bin/wkhtmltopdf`.
If you wish to use the extra functionality of BookStack such as email, LDAP and so on you will need to set additional environment variables or make your own .env file with guidance from the BookStack documentation.
The container will copy an exemplary .env file to /config/www/.env on your host system for you to use.
# init diagram
init_diagram: |
"bookstack:latest": {
docker-mods
base {
fix-attr +\nlegacy cont-init
}
docker-mods -> base
legacy-services
custom services
init-services -> legacy-services
init-services -> custom services
custom services -> legacy-services
legacy-services -> ci-service-check
init-migrations -> init-adduser
init-nginx-end -> init-bookstack-config
init-nginx-end -> init-config
init-os-end -> init-config
init-bookstack-config -> init-config-end
init-config -> init-config-end
init-crontab-config -> init-config-end
init-config -> init-crontab-config
init-mods-end -> init-custom-files
init-adduser -> init-device-perms
base -> init-envfile
init-os-end -> init-folders
init-php -> init-keygen
base -> init-migrations
init-config-end -> init-mods
init-mods-package-install -> init-mods-end
init-mods -> init-mods-package-install
init-samples -> init-nginx
init-version-checks -> init-nginx-end
init-adduser -> init-os-end
init-device-perms -> init-os-end
init-envfile -> init-os-end
init-keygen -> init-permissions
init-nginx -> init-php
init-folders -> init-samples
init-custom-files -> init-services
init-permissions -> init-version-checks
init-services -> svc-cron
svc-cron -> legacy-services
init-services -> svc-memcached
svc-memcached -> legacy-services
init-services -> svc-nginx
svc-nginx -> legacy-services
init-services -> svc-php-fpm
svc-php-fpm -> legacy-services
init-services -> svc-queue-worker
svc-queue-worker -> legacy-services
}
Base Images: {
"baseimage-alpine-nginx:3.23" <- "baseimage-alpine:3.23"
}
"bookstack:latest" <- Base Images
# changelog # changelog
changelogs: changelogs:
- { date: "11.07.21:", desc: "Rebase to Alpine 3.14." } - {date: "28.12.25:", desc: "Rebase to Alpine 3.23."}
- { date: "12.01.21:", desc: "Remove unused requirement, as of release 0.31.0." } - {date: "05.07.25:", desc: "Rebase to Alpine 3.22."}
- { date: "17.12.20:", desc: "Make APP_URL var required (upstream changes)." } - {date: "04.01.25:", desc: "Add php-opcache."}
- { date: "17.09.20:", desc: "Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default." } - {date: "17.12.24:", desc: "Rebase to Alpine 3.21."}
- { date: "19.12.19:", desc: "Rebasing to alpine 3.11." } - {date: "11.10.24:", desc: "Default to environment config over .env file config."}
- { date: "26.07.19:", desc: "Use old version of tidyhtml pending upstream fixes." } - {date: "06.09.24:", desc: "Add php-exif for reading image EXIF data."}
- { date: "28.06.19:", desc: "Rebasing to alpine 3.10." } - {date: "27.05.24:", desc: "Rebase to Alpine 3.20. Existing users should update their nginx confs to avoid http2 deprecation warnings."}
- { date: "14.06.19:", desc: "Add wkhtmltopdf to image for PDF rendering." } - {date: "25.01.24:", desc: "Existing users should update: site-confs/default.conf - Cleanup default site conf."}
- { date: "20.04.19:", desc: "Rebase to Alpine 3.9, add MySQL init logic." } - {date: "23.12.23:", desc: "Rebase to Alpine 3.19 with php 8.3."}
- { date: "22.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag." } - {date: "31.10.23:", desc: "Further sanitize sed replace."}
- { date: "20.01.19:", desc: "Added php7-curl"} - {date: "07.06.23:", desc: "Add mariadb-client for bookstack-system-cli support."}
- { date: "04.11.18:", desc: "Added php7-ldap"} - {date: "25.05.23:", desc: "Rebase to Alpine 3.18, deprecate armhf."}
- { date: "15.10.18:", desc: "Changed functionality for advanced users"} - {date: "13.04.23:", desc: "Move ssl.conf include to default.conf."}
- { date: "08.10.18:", desc: "Advanced mode, symlink changes, sed fixing, docs updated, added some composer files"} - {date: "01.03.23:", desc: "Add php iconv."}
- { date: "23.09.28:", desc: "Updates pre-release"} - {date: "19.01.23:", desc: "Rebase to alpine 3.17 with php8.1."}
- { date: "02.07.18:", desc: "Initial Release." } - {date: "16.01.23:", desc: "Wrap `.env` values in quotes."}
- {date: "05.01.23:", desc: "Fix db password setting (sed escape `&`)."}
- {date: "21.12.22:", desc: "Update db info in .env file when env vars are updated."}
- {date: "10.10.22:", desc: "Remove password escape logic which caused problems for a small subset of users."}
- {date: "20.08.22:", desc: "Rebasing to alpine 3.15 with php8. Restructure nginx configs ([see changes announcement](https://info.linuxserver.io/issues/2022-08-20-nginx-base))."}
- {date: "14.03.22:", desc: "Add symlinks for theme support."}
- {date: "11.07.21:", desc: "Rebase to Alpine 3.14."}
- {date: "12.01.21:", desc: "Remove unused requirement, as of release 0.31.0."}
- {date: "17.12.20:", desc: "Make APP_URL var required (upstream changes)."}
- {date: "17.09.20:", desc: "Rebase to alpine 3.12. Fix APP_URL setting. Bump php post max and upload max filesizes to 100MB by default."}
- {date: "19.12.19:", desc: "Rebasing to alpine 3.11."}
- {date: "26.07.19:", desc: "Use old version of tidyhtml pending upstream fixes."}
- {date: "28.06.19:", desc: "Rebasing to alpine 3.10."}
- {date: "14.06.19:", desc: "Add wkhtmltopdf to image for PDF rendering."}
- {date: "20.04.19:", desc: "Rebase to Alpine 3.9, add MySQL init logic."}
- {date: "22.03.19:", desc: "Switching to new Base images, shift to arm32v7 tag."}
- {date: "20.01.19:", desc: "Added php7-curl"}
- {date: "04.11.18:", desc: "Added php7-ldap"}
- {date: "15.10.18:", desc: "Changed functionality for advanced users"}
- {date: "08.10.18:", desc: "Advanced mode, symlink changes, sed fixing, docs updated, added some composer files"}
- {date: "23.09.28:", desc: "Updates pre-release"}
- {date: "02.07.18:", desc: "Initial Release."}

9
root/appkey Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
mkdir -p \
/config/www/framework/{cache,sessions,views} \
/config/log/bookstack
touch /config/log/bookstack/laravel.log
php /app/www/artisan key:generate --show --no-ansi

View File

@ -1,39 +0,0 @@
## Version 2018/03/06 - Changelog: https://github.com/linuxserver/docker-heimdall/commits/master/root/defaults/default
server {
listen 80 default_server;
listen 443 ssl;
root /var/www/html/public;
index index.php index.html index.htm;
server_name _;
ssl_certificate /config/keys/cert.crt;
ssl_certificate_key /config/keys/cert.key;
client_max_body_size 0;
error_page 599 = @noauth;
location @noauth {
try_files $uri $uri/ /index.php?$args;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# With php5-cgi alone:
fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
#fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include /etc/nginx/fastcgi_params;
}
}

View File

@ -1,98 +0,0 @@
user abc;
worker_processes 4;
pid /run/nginx.pid;
include /etc/nginx/modules/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
client_max_body_size 0;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Logging Settings
##
access_log /config/log/nginx/access.log;
error_log /config/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
##
# nginx-naxsi config
##
# Uncomment it if you installed nginx-naxsi
##
#include /etc/nginx/naxsi_core.rules;
##
# nginx-passenger config
##
# Uncomment it if you installed nginx-passenger
##
#passenger_root /usr;
#passenger_ruby /usr/bin/ruby;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /config/nginx/site-confs/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
daemon off;

View File

@ -1,115 +0,0 @@
#!/usr/bin/with-contenv bash
# create directory structure
mkdir -p \
/config/www/{uploads,files,images}
# check for .env and copy default if needed
[[ ! -f "/config/www/.env" ]] && \
cp /var/www/html/.env.example /config/www/.env
# check for zero-length .env and alert user if found
[[ ! -s "/config/www/.env" ]] && \
echo "WARNING: zero-length .env file detected. Please delete /config/www/.env and restart the container"
# create symlinks
symlinks=( \
/var/www/html/storage/uploads/files \
/var/www/html/storage/uploads/images \
/var/www/html/public/uploads \
/var/www/html/.env \
/var/www/html/storage/logs/laravel.log
)
for i in "${symlinks[@]}"
do
[[ -e "$i" && ! -L "$i" ]] && rm -rf "$i"
[[ ! -L "$i" ]] && ln -s /config/www/"$(basename "$i")" "$i"
done
# Echo init finish for test runs
if [ -n "${TEST_RUN}" ]; then
echo '[services.d] done.'
fi
# Create API key if needed
if [ ! -f "/config/BOOKSTACK_APP_KEY.txt" ];
then
echo "Generating BookStack app key for first run"
key=$(php /var/www/html/artisan key:generate --show)
echo $key > /config/BOOKSTACK_APP_KEY.txt
echo "App Key set to $key you can modify the file to update /config/BOOKSTACK_APP_KEY.txt"
elif [ -f "/config/BOOKSTACK_APP_KEY.txt" ];
then
echo "App Key found - setting variable for seds"
key=$(cat /config/BOOKSTACK_APP_KEY.txt)
fi
# .env file setup
# check for the default app key or if it has been updated
if grep -Fxq "APP_KEY=SomeRandomString" /config/www/.env || \
! grep -Fxq "APP_KEY=${key}" /config/www/.env; then
sed -i "s#^APP_KEY=.*#APP_KEY=${key}#" /config/www/.env
fi
# check to see if db_user is set, if it is then run seds and if not then leave them
if [ "${DB_USER}" ];
then
echo "Running config - db_user set"
ESCAPED_PASSWORD=$(sed -e 's/[$\/&]/\\&/g' <<< $DB_PASS)
sed -i "s/DB_HOST=localhost/DB_HOST=${DB_HOST}/g" /config/www/.env
sed -i "s/DB_DATABASE=database_database/DB_DATABASE=${DB_DATABASE}/g" /config/www/.env
sed -i "s/DB_USERNAME=database_username/DB_USERNAME=${DB_USER}/g" /config/www/.env
sed -i "s/DB_PASSWORD=database_user_password/DB_PASSWORD=${ESCAPED_PASSWORD}/g" /config/www/.env
fi
# set appurl
if [ -z "${APP_URL}" ]; then
EXT_IP=$(curl -s https://icanhazip.com)
APP_URL="http://${EXT_IP}:6875"
echo "**** Docker env var APP_URL is not set, setting it to ${APP_URL} ****"
fi
OLD_URL=$(grep APP_URL /config/www/.env | sed 's|.*APP_URL=||g')
if [ "${APP_URL}" != "${OLD_URL}" ]; then
sed -r "s,([#\s]*)?APP_URL=.*,APP_URL=${APP_URL},g" -i /config/www/.env
echo "**** APP_URL in /config/www/.env is being updated from ${OLD_URL} to ${APP_URL} ****"
if [ "${OLD_URL}" != "http://example.com" ]; then
echo "**** If this is an existing install, you should run the following line from your host terminal to update the database URL entries: ****"
echo "************************************************************************"
echo "docker exec -it bookstack php /var/www/html/artisan bookstack:update-url ${OLD_URL} ${APP_URL}"
echo "************************************************************************"
fi
fi
## Bump php upload max filesize and post max size to 100MB by default
grep -qx '^upload_max_filesize.*$' /config/php/php-local.ini || echo 'upload_max_filesize = 100M' >> /config/php/php-local.ini
grep -qx '^post_max_size.*$' /config/php/php-local.ini || echo 'post_max_size = 100M' >> /config/php/php-local.ini
# check for the mysql endpoint for 30 seconds
END=$((SECONDS+30))
while [ ${SECONDS} -lt ${END} ] && [ -n "${DB_HOST+x}" ]; do
/usr/bin/nc -z ${DB_HOST} 3306 && \
if [ ! -z "$(/usr/bin/nc -w1 ${DB_HOST} 3306)" ]; then
[ ! -z "${RUN}" ] && break
RUN="RAN"
# we sleep here again due to first run init on DB containers
[ ! -f /dbwait.lock ] && sleep 5
else
sleep 1
fi
sleep 1
done
# update database - will set up database if fresh, or, migrate existing
if [ -z "${CI_RUN+x}" ]; then
php /var/www/html/artisan migrate --force
fi
# set permissions
chown -R abc:abc \
/config
find /var/www -print0 | xargs -P "$(nproc)" -I {} -0 chown -h abc:abc {}
find /var/www -print0 -type d | xargs -P "$(nproc)" -I {} -0 chown -h abc:abc {}
# set lockfile to avoid DB waits for this specific container
touch /dbwait.lock

View File

@ -0,0 +1,63 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
# create directory structure
mkdir -p \
/config/www/{uploads,files,images,themes} \
/config/www/framework/{cache,sessions,views,purifier} \
/config/backups \
/config/log/bookstack
if [[ ! -f /tmp/dbwait.lock ]];then
rm -rf /config/www/framework/{cache,sessions,views,purifier}/*
fi
# check for .env and copy default if needed
if [[ ! -f "/config/www/.env" ]] || [[ ! -s "/config/www/.env" ]]; then
cp /app/www/.env.example /config/www/.env
fi
# Check for app key
if [[ -z ${APP_KEY} ]]; then
if ! grep -qE "APP_KEY=[0-9A-Za-z:+\/=]{1,}" /config/www/.env 2> /dev/null || grep -qE "APP_KEY=SomeRandomString" /config/www/.env 2> /dev/null; then
echo "The application key is missing, halting init!"
echo "You can generate a key with: docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey"
echo "And apply it to the APP_KEY environment variable."
sleep infinity
fi
fi
## Bump php upload max filesize and post max size to 100MB by default
if ! grep -qx '^upload_max_filesize.*$' /config/php/php-local.ini; then
echo 'upload_max_filesize = 100M' >>/config/php/php-local.ini
fi
if ! grep -qx '^post_max_size.*$' /config/php/php-local.ini; then
echo 'post_max_size = 100M' >>/config/php/php-local.ini
fi
# if DB_PORT is not set
if [[ -z "${DB_PORT}" ]]; then
DB_PORT="3306"
fi
# check for the mysql endpoint
echo "Waiting for DB to be available"
END=$((SECONDS + 30))
while [[ ${SECONDS} -lt ${END} ]] && [[ -n "${DB_HOST+x}" ]]; do
if [[ $(/usr/bin/nc -w1 "${DB_HOST}" "${DB_PORT}" | tr -d '\0') ]]; then
if [[ ! -f /tmp/dbwait.lock ]]; then
sleep 5
fi
touch /tmp/dbwait.lock
break
else
sleep 1
fi
done
# update database - will set up database if fresh, or, migrate existing
php /app/www/artisan migrate --force
# permissions
lsiown -R abc:abc \
/config

View File

@ -0,0 +1 @@
oneshot

View File

@ -0,0 +1 @@
/etc/s6-overlay/s6-rc.d/init-bookstack-config/run

View File

@ -1,2 +1,4 @@
#!/usr/bin/with-contenv bash #!/usr/bin/with-contenv bash
# shellcheck shell=bash
exec memcached -u abc exec memcached -u abc

View File

@ -0,0 +1 @@
longrun

View File

@ -0,0 +1,6 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
echo "*** Starting Async Action Queue ***"
exec /usr/bin/php /app/www/artisan queue:work --sleep=3 --tries=1 --max-time=3600

View File

@ -0,0 +1 @@
longrun

View File

@ -1,2 +0,0 @@
#!/usr/bin/with-contenv bash
exec /usr/sbin/php-fpm7 -F

9
root/init-hook Executable file
View File

@ -0,0 +1,9 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
if [[ -n "${QUEUE_CONNECTION}" ]]; then
touch /etc/s6-overlay/s6-rc.d/user/contents.d/svc-queue-worker
fi
exec \
/docker-mods

View File

@ -0,0 +1,11 @@
#!/usr/bin/with-contenv bash
# shellcheck shell=bash
DEFAULT_CONF="/config/nginx/site-confs/default.conf"
OLD_ROOT="root /var/www/html/public;"
NEW_ROOT="root /app/www/public;"
if [[ -f "${DEFAULT_CONF}" ]] && grep -q "${OLD_ROOT}" "${DEFAULT_CONF}" 2>/dev/null; then
echo "updating root in ${DEFAULT_CONF}"
sed -i "s|${OLD_ROOT}|${NEW_ROOT}|" "${DEFAULT_CONF}"
fi

View File

@ -0,0 +1,40 @@
<html>
<head>
<title>Upgrade Required!</title>
<style>
body{
font-family: Helvetica, Arial, sans-serif;
}
.message{
width:440px;
padding:20px 40px;
margin:0 auto;
background-color:#f9f9f9;
border:1px solid #ddd;
color: #1e3d62;
}
center{
margin:40px 0;
}
h1{
font-size: 18px;
line-height: 26px;
}
p{
font-size: 12px;
}
a{
color: rgb(207, 48, 139);
}
</style>
</head>
<body>
<div class="message">
<h1>Upgrade Required!</h1>
<p>The application inside this image has been moved to a new folder.</p>
<p>You will need to update your <strong>/config/nginx/nginx.conf</strong> and <strong>/config/nginx/site-confs/default.conf</strong> in order for the application to work.</p>
<p>New config samples are located at <strong>/config/nginx/nginx.conf.sample</strong> and <strong>/config/nginx/site-confs/default.conf.sample</strong></p>
<p>Please review our announcement: <a target="_blank" href="https://info.linuxserver.io/issues/2022-08-20-nginx-base/">Significant changes to nginx based images</a></p>
</div>
</body>
</html>