Skip to content

Commit 8458497

Browse files
Cycle 1 Deployment - Merge pull request #244 from coollabsio/next
2 parents 7530024 + 972a2ef commit 8458497

File tree

33 files changed

+871
-53
lines changed

33 files changed

+871
-53
lines changed

bun.lockb

447 Bytes
Binary file not shown.

docs/.vitepress/config.mts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import spec from '../public/openapi.json' with { type: 'json' }
77
import container from 'markdown-it-container'
88
import { bundledLanguages } from 'shiki'
99
import { join, dirname } from 'node:path'
10+
import { tabsMarkdownPlugin } from 'vitepress-plugin-tabs'
1011

1112
const sidebar = useSidebar({ spec, collapsible: true })
1213

@@ -141,6 +142,7 @@ export default defineConfig({
141142
text: 'Overview',
142143
link: '/databases/index',
143144
items: [
145+
{ text: 'Database SSL', link: '/databases/ssl' },
144146
{ text: 'Backups', link: '/databases/backups' },
145147
{ text: 'MySQL', link: '/databases/mysql' },
146148
{ text: 'MariaDB', link: '/databases/mariadb' },
@@ -163,11 +165,14 @@ export default defineConfig({
163165
link: '/services/overview',
164166
items: [
165167
{ text: 'ActivePieces', link: '/services/activepieces' },
168+
{ text: 'Actual Budget', link: '/services/actualbudget' },
166169
{ text: 'AnythingLLM', link: '/services/anythingllm' },
167170
{ text: 'Appsmith', link: '/services/appsmith' },
168171
{ text: 'Appwrite', link: '/services/appwrite' },
169172
{ text: 'Argilla', link: '/services/argilla' },
170173
{ text: 'Authentik', link: '/services/authentik' },
174+
{ text: 'Affine', link: '/services/affine' },
175+
{ text: 'Apprise API', link: '/services/apprise-api' },
171176
{ text: 'Baby Buddy', link: '/services/babybuddy' },
172177
{ text: 'Beszel', link: '/services/beszel' },
173178
{ text: 'Browserless', link: '/services/browserless' },
@@ -341,6 +346,7 @@ export default defineConfig({
341346
{ text: 'Environment Variables', link: '/knowledge-base/environment-variables' },
342347
{ text: 'Persistent Storage', link: '/knowledge-base/persistent-storage' },
343348
{ text: 'Drain Logs', link: '/knowledge-base/drain-logs' },
349+
{ text: 'Rolling Updates', link: '/knowledge-base/rolling-updates' },
344350
{ text: 'Health Checks', link: '/knowledge-base/health-checks' },
345351
{ text: 'Cron Syntax', link: '/knowledge-base/cron-syntax' },
346352
]
@@ -349,6 +355,7 @@ export default defineConfig({
349355
text: 'How-Tos',
350356
collapsed: true,
351357
items: [
358+
{ text: 'Backup & Restore Coolify', link: '/knowledge-base/how-to/backup-restore-coolify' },
352359
{ text: 'Load-balancing on Hetzner', link: '/knowledge-base/how-to/hetzner-loadbalancing' },
353360
{ text: 'Wordpress Multisite', link: '/knowledge-base/how-to/wordpress-multisite' },
354361
{ text: 'Raspberry Pi OS Setup', link: '/knowledge-base/how-to/raspberry-pi-os' },
@@ -462,6 +469,7 @@ export default defineConfig({
462469
collapsed: true,
463470
items: [
464471
{ text: 'Overview', link: '/knowledge-base/proxy/caddy/overview' },
472+
{ text: 'Basic Auth', link: '/knowledge-base/proxy/caddy/basic-auth' },
465473
]
466474
},
467475
]
@@ -578,6 +586,7 @@ export default defineConfig({
578586
}
579587
}
580588
})
589+
md.use(tabsMarkdownPlugin)
581590
},
582591
theme: {
583592
light: 'github-light',

docs/.vitepress/theme/index.ts

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ import "./scrollbar.css";
1818
import "./tailwind.postcss";
1919
import "vitepress-openapi/dist/style.css";
2020

21+
// Import plugins
22+
import { enhanceAppWithTabs } from "vitepress-plugin-tabs/client";
23+
2124
// @ts-ignore
2225
import spec from "../../public/openapi.json" assert { type: "json" };
2326

@@ -40,13 +43,15 @@ export default {
4043
extends: DefaultTheme,
4144
Layout: Landing,
4245
enhanceApp({ app, router, siteData }) {
46+
enhanceAppWithTabs(app);
47+
4348
const openapi = useOpenapi({
4449
spec,
4550
base: "/docs/api-reference/api/operations/",
4651
label: "API",
4752
});
4853

49-
theme.enhanceApp({ app, openapi })
54+
theme.enhanceApp({ app, openapi });
5055
app.component("Card", Card);
5156
app.component("CardGroup", CardGroup);
5257
app.component("LandingSection", Sections);
@@ -60,21 +65,25 @@ export default {
6065
app.component("Browser", Browser);
6166

6267
router.onAfterRouteChange = () => {
63-
if (typeof window !== 'undefined' && (window as any).plausible) {
64-
(window as any).plausible('pageview')
68+
if (typeof window !== "undefined" && (window as any).plausible) {
69+
(window as any).plausible("pageview");
6570
}
66-
}
67-
app.directive('plausible', {
71+
};
72+
app.directive("plausible", {
6873
mounted(el: HTMLElement, binding: DirectiveBinding) {
69-
const eventName = binding.arg
70-
const eventData = binding.value || {}
74+
const eventName = binding.arg;
75+
const eventData = binding.value || {};
7176

72-
el.addEventListener('click', () => {
73-
if (typeof window !== 'undefined' && (window as any).plausible && eventName) {
74-
(window as any).plausible(eventName, { props: eventData })
77+
el.addEventListener("click", () => {
78+
if (
79+
typeof window !== "undefined" &&
80+
(window as any).plausible &&
81+
eventName
82+
) {
83+
(window as any).plausible(eventName, { props: eventData });
7584
}
76-
})
77-
}
78-
})
85+
});
86+
},
87+
});
7988
},
8089
} satisfies Theme;

docs/api-reference/authorization.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,29 @@ The token will only be able to access resources that are owned by the team that
3232

3333
## Permissions
3434

35+
::: warning HEADS UP!
36+
Some API data won't get returned if the API token doesn't have correct permissions
37+
:::
38+
3539
Currently there are three types of permissions:
3640

3741
- read-only `(default)`
42+
- read:sensitive
3843
- view:sensitive
3944
- `*` (all permissions)
4045

4146
### `read-only`
4247

4348
With this permission, you can only read data from the API, but you can't create, update, or delete any resources. Also you can't see sensitive data.
4449

50+
### `read:sensitive`
51+
52+
With this permission, you can only read data from the API and see sensitive information that is normally redacted. You cannot create, update, or delete any resources.
53+
4554
### `view:sensitive`
4655

4756
Without this permission, passwords, api keys, and other sensitive data will be redacted from the API response.
4857

4958
### `*`
5059

51-
Full access to all resources and sensitive data.
60+
Full access to all resources and sensitive data.

docs/databases/clickhouse.md

Lines changed: 71 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,82 @@
22
title: ClickHouse
33
---
44

5-
# ClickHouse
65

7-
![clickhouse](/images/database-logos/clickhouse.webp)
6+
# Clickhouse
7+
8+
<ZoomableImage src="/docs/images/database-logos/clickhouse.webp" />
9+
810

911
## What is ClickHouse
12+
ClickHouse is an open-source column-oriented database management system designed for online analytical processing (OLAP).
13+
14+
It's known for its exceptional query performance on large datasets, making it ideal for real-time analytics and data warehousing applications.
15+
16+
ClickHouse uses a column-oriented storage format and employs various optimizations like vectorized query execution to achieve high performance.
17+
18+
It supports SQL with extensions and can handle both batch and stream data ingestion, making it versatile for various analytical workloads.
19+
20+
21+
## Backup and Restore Guide
22+
Currently, Coolify does not support modifying ClickHouse configurations, which means certain native backup options (e.g., backing up to a local Disk or using `ALTER TABLE ... FREEZE PARTITION ...`) are not possible. Instead, the recommended approach is to use S3 for backups.
23+
24+
25+
### How to Backup ClickHouse
26+
To backup a table or an entire database, use the following SQL command:
27+
28+
- **Backup a Table:**
29+
```sql
30+
BACKUP TABLE <table_name> TO S3('<your_s3_endpoint_com>/<unique_folder_for_table_backup>', '<s3_access_key>', '<s3_secret_key>')
31+
```
32+
33+
- **Backup a Database:**
34+
Replace `TABLE` with `DATABASE` to backup the whole database:
35+
36+
```sql
37+
BACKUP DATABASE <database_name> TO S3('<your_s3_endpoint_com>/<unique_folder_for_database_backup>', '<s3_access_key>', '<s3_secret_key>')
38+
```
39+
40+
41+
### How to Restore ClickHouse
42+
To restore a table or database from an S3 backup, use the corresponding RESTORE command:
43+
44+
- **Restore a Table:**
45+
```sql
46+
RESTORE TABLE <table_name> FROM S3('<your_s3_endpoint_com>/<unique_folder_from_table_backup>', '<s3_access_key>', '<s3_secret_key>')
47+
```
48+
49+
- **Restore a Database:**
50+
Replace `TABLE` with `DATABASE` to restore the whole database:
51+
52+
```sql
53+
RESTORE DATABASE <database_name> FROM S3('<your_s3_endpoint_com>/<unique_folder_from_database_backup>', '<s3_access_key>', '<s3_secret_key>')
54+
```
55+
56+
57+
### What Doesn't Work
58+
- **Disk Backups:**
59+
60+
```sql
61+
BACKUP TABLE test.table TO Disk('backups', '1.zip')
62+
```
63+
Does not work due to Coolify not allowing modifications to ClickHouse configurations.
64+
65+
- **Native Partition Freezes:**
66+
67+
```sql
68+
ALTER TABLE ... FREEZE PARTITION ...
69+
```
70+
May not work because of limitations in the Docker/Coolify file structure.
71+
72+
- **clickhouse-backup Tool:**
73+
External tools like [clickhouse-backup](https://github.com/Altinity/clickhouse-backup?utm_source=coolify.io) might not function properly within the Docker/Coolify setup due to similar configuration restrictions.
74+
1075

11-
ClickHouse is an open-source column-oriented database management system designed for online analytical processing (OLAP). It's known for its exceptional query performance on large datasets, making it ideal for real-time analytics and data warehousing applications.
76+
### Performance Notes
77+
A community member shared that backing up a 145GB database took around 12 minutes, while restoring it took roughly 17 minutes.
1278

13-
ClickHouse uses a column-oriented storage format and employs various optimizations like vectorized query execution to achieve high performance. It supports SQL with extensions and can handle both batch and stream data ingestion, making it versatile for various analytical workloads.
1479

1580
## Links
1681

17-
- [The official website ›](https://clickhouse.com/)
18-
- [GitHub ›](https://github.com/ClickHouse/ClickHouse)
82+
- [The official website ›](https://clickhouse.com/?utm_source=coolify.io)
83+
- [GitHub ›](https://github.com/ClickHouse/ClickHouse?utm_source=coolify.io)

docs/databases/dragonfly.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,20 @@ DragonFly is a modern in-memory datastore, designed as a Redis alternative with
1212

1313
With its multi-threaded architecture and advanced data structures, DragonFly aims to provide enhanced scalability and performance for applications that require Redis-like functionality on modern hardware.
1414

15+
## Data Persistence
16+
By default, Dragonfly DB does not save data to disk. To enable persistence, set up snapshots manually.
17+
18+
For example, configure the service with:
19+
20+
```yaml
21+
services:
22+
dragonfly:
23+
command: 'dragonfly --requirepass XXXXXXXX --dir /data --dbfilename dragonfly-snapshot-{timestamp} --snapshot_cron "*/5 * * * *"'
24+
```
25+
26+
You can also trigger manual saves using the SDK's `SAVE` command.
27+
1528
## Links
1629

17-
- [The official website ›](https://dragonflydb.io/)
18-
- [GitHub ›](https://github.com/dragonflydb/dragonfly)
30+
- [The official website ›](https://dragonflydb.io/?utm_source=coolify.io)
31+
- [GitHub ›](https://github.com/dragonflydb/dragonfly?utm_source=coolify.io)

0 commit comments

Comments
 (0)