Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ jobs:

strategy:
matrix:
node-version: [16.14]
node-version: [22.16]

steps:
- uses: actions/checkout@v1
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
Original file line number Diff line number Diff line change
@@ -1 +1 @@
16.14
22.16
3 changes: 0 additions & 3 deletions docs/config/logs/embed_logs.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ All emoji used within these logs is from [The Hangar](https://discord.gg/uTcdUmF

If you would like your bot to have access to the emoji on the server, join us and look at the `#add-your-bot` channel!

You can then apply the [Hangar Emoji Patch](../../patch/hangar-emoji.md) on your instance so it uses those emoji!

#### Name in config: `logs`

````yaml
Expand All @@ -26,7 +24,6 @@ plugins:
allow_user_mentions: false
include_embed_timestamp: true
format:
timestamp: ""
CASE_CREATE: >-
✏ {userMention(mod)} manually created new **{caseType}** case
(#{caseNum})
Expand Down
4 changes: 2 additions & 2 deletions docs/credits.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ sidebar_position: 99
## Community Patches

- **Jernik** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/100613274353029120) [![gh](/img/logos/github.png)](https://github.com/Jernik) **)** :: [Select Menus](./patch/select-menu.md)
- **metal** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/344837487526412300) [![gh](/img/logos/github.png)](https://github.com/metal0) **)** :: [Select Menus](./patch/select-menu.md) + [Reason Aliases](./patch/reason-aliases.md) + [Better Dashboard Management](./patch/better-dashboard-management.md) + [Hangar Emoji](./patch/hangar-emoji.md) + [Default BotControl Overrides](./patch/default-bc-overrides.md) + [Tags Counter Getters](./patch/tags-counter-getters.md)
- **metal** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/344837487526412300) [![gh](/img/logos/github.png)](https://github.com/metal0) **)** :: [Select Menus](./patch/select-menu.md) + [Reason Aliases](./patch/reason-aliases.md) + [Better Dashboard Management](./patch/better-dashboard-management.md) + Hangar Emoji + [Default BotControl Overrides](./patch/default-bc-overrides.md) + [Tags Counter Getters](./patch/tags-counter-getters.md)
- **KK** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/426892116258717707) [![gh](/img/logos/github.png)](https://github.com/KK964) **)** :: [Social Media](./patch/social-media.md) + [Activities](./patch/activities.md)
- **Flokie** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/161165663715459072) [![gh](/img/logos/github.png)](https://github.com/FlokieW) **)** :: [Better Archives](./patch/better-archives.md)
- **AnsyWonhalf** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/141288766760288256) [![gh](/img/logos/github.png)](https://github.com/AnsyWonhalf) **)** :: [Better Archives](./patch/better-archives.md)

## Documentation

- **zay** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/452793411401940995) [![gh](/img/logos/github.png)](https://github.com/isaacKenyon) **)** :: Writing these docs

- **Ruby** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/787592668242640907) [![gh](/img/logos/github.png)](https://github.com/rubyowo) **)** :: More docs
## Configuration

- **zay** **(** [![disc](/img/logos/discord.png)](https://discord.com/users/452793411401940995) [![gh](/img/logos/github.png)](https://github.com/isaacKenyon) **)** :: [Moderation](./config/moderation/mod_actions.md)
Expand Down
4 changes: 0 additions & 4 deletions docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,3 @@ Guides to setup your Zeppelin selfhost
### **[Community Patches](./patch/intro.md)**

Community-made modifications that you can apply to your Zeppelin selfhost to upgrade it's capabilities

### **[Phisherman Setup](./services/phisherman.md)**

Instructions on how to setup the Phisherman anti-phishing service on your zeppelin instance
34 changes: 0 additions & 34 deletions docs/patch/hangar-emoji.md

This file was deleted.

19 changes: 1 addition & 18 deletions docs/patch/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,20 +16,7 @@ Right now, patches are being added manually to the [patches repository,](https:/
However, you can generate a patch file for any [PR](https://github.com/ZeppelinBot/Zeppelin/pulls) by appending `.patch` to the URL.

:::info
After applying a patch, you may need to perform any/all the following actions:

<details>
<summary>For a locally hosted zeppelin</summary>
<p>Rebuild your Bot Service</p>
<p>Rebuild your API Service</p>
<p>Run DB migrations (<code>npm run migrate-prod</code>)</p>
<p>Redeploy your Bot Service</p>
<p>Redeploy your API Service</p>
</details>
<details>
<summary>For a zeppelin hosted on docker</summary>
Restart the bot, by i.e running: <code>bash ./update.sh</code> (from the project root)
</details>
After applying a patch, you may need to rebuild the bot by running `docker compose -f docker-compose.<standalone/lightweight>.yml up -d --build`, replacing standalone/lightweight with your respective compose file.

**If you are not sure what actions to perform for a specific patch, just perform them all to be safe, they will also be specified on each patch's guide page.**
:::
Expand Down Expand Up @@ -78,10 +65,6 @@ Adds better archiving capabilities to zeppelin

Spoofs API permissions for Zeppelin STAFF users so that they have access to all servers without modifying your database

### [Hangar Emoji](./hangar-emoji.md)

Changes your case icon and success emoji icon to use emoji from [The Hangar](https://discord.gg/uTcdUmF6Q7) discord server

### [Default BotControl Overrides](./default-bc-overrides.md)

Adds overrides to the `bot_control` plugin so that all `STAFF` users have access to all Zeppelin global commands by default
Expand Down
6 changes: 5 additions & 1 deletion docs/services/phisherman.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
---
title: Phisherman
title: Phisherman (Deprecated)
description: Configuring Phisherman for phishing detection
hide_table_of_contents: false
sidebar_position: 5
---

:::warning
Phisherman has officially been sunsetted, and replaced with [FishFish](https://fishfish.gg). Instructions on how to obtain an API key will be provided once it is a public API.
:::

# [Phisherman](https://phisherman.gg/) - Anti [Phishing](https://www.phishing.org/what-is-phishing)

## Prerequisites
Expand Down
15 changes: 14 additions & 1 deletion docs/setup/discord/custom-status.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,20 @@ sidebar_position: 3
});
```

to line 360 (under `startUptimeCounter()`). You can find all of the different ActivityType's [here](https://discord-api-types.dev/api/discord-api-types-v10/enum/ActivityType).
to line 399 (under `startUptimeCounter()`). You can find all of the different ActivityType's [here](https://discord-api-types.dev/api/discord-api-types-v10/enum/ActivityType).

:::info
If using the `Custom` ActivityType, set the activity's `state` instead of its `name`, eg:

```js
client.user?.setPresence({
activities: [
{ state: "Burning in a trashbin", type: ActivityType.Custom },
],
});
```

:::

![custom activity](/img/guides/discord/custom_activity.png "Custom Activity")

Expand Down
10 changes: 7 additions & 3 deletions docs/setup/hosted-platforms/railway.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
---
title: Railway Guide
title: Railway Guide (Outdated)
description: Hosting on Railway.app
hide_table_of_contents: false
---

:::warning
Railway is **no longer supported** officialy
:::

# Deploy [Zeppelin](https://zeppelin.gg) on [Railway](https://railway.app?referralCode=VTVa-k)

:::warning
Expand Down Expand Up @@ -113,10 +117,10 @@ You can do this by heading to your API/Bot containers, clicking the 3-dots butto
We need to insert the OAuth Redirect/Callback URL on Discord's Developer Portal, you can do this in 1 of 2 ways:

1. Go to your API container -> Settings -> Domains, copy the domain and manually append `auth/oauth-callback` to it.
(i.e. `https://your_api_url.up.railway.com/auth/oauth-callback`)
(i.e. `https://your_api_url.up.railway.com/auth/oauth-callback`)

2. Once the API is done building, click the deployment (View Logs), select "Builds Logs", select the Filter bar and search for "oauth".
![Api Logs](/img/guides/railway/api_logs.png)
![Api Logs](/img/guides/railway/api_logs.png)

Now, go back to Discord Developer Portal and use this url for the OAuth Callback URL.

Expand Down
90 changes: 29 additions & 61 deletions docs/setup/operating-systems/linux-docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,13 +59,13 @@ Run the following commands and pay attention to the output.

If it says that docker is not found, skip down to the Installing Docker section below.

If Docker is installed, it will give a version number. Make sure it's version 20. As of the time this article was written, the latest version was 20.10.22.
If Docker is installed, it will give a version number. Make sure it's version 20+. As of the time this article was written, the latest version was 28.2.2.

2. `docker compose version`

Make sure this is version 2 or higher (it should be if the command works as written)

If it is, skip down to the WHAT SECTION section.
If it is, skip down to the [Set up the Discord bot](#set-up-the-discord-bot) section.

3. `docker-compose version`

Expand Down Expand Up @@ -98,9 +98,9 @@ In order to install Docker, we need to add the package repository.

3. Set up the repository:
`echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null`
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null`

4. Update the apt index
`sudo apt-get update`
Expand Down Expand Up @@ -132,58 +132,11 @@ Complete the steps there and return back to this guide.

This creates a folder called Zeppelin and clones the bot code there.

<!-- NO REQUIRED/TEMPORARY STEPS. WOOHOO!
### Needed and Optional Temporary Steps

Some of the steps are required, and some optional. Do both of the required steps, and the optional steps according to your need.

#### Using an Older Commit (required)

The latest commit (that was downloaded using the clone command above) does not currently run without errors. To get around this issue, a known working older commit will be used.

`git checkout b28ca17`

#### Rootrouter (required)

Needed for the bot to start correctly and the dashboard to load.

`nano Zeppelin/backend/src/api/start.ts`
Press Ctrl-W and type `initAuth` and press Enter.

In each of the 4 lines:
```
initAuth(app);
initGuildsAPI(app);
initArchives(app);
initDocs(app);
```

Change `app` to `rootRouter` so that it looks like this:

```
initAuth(rootRouter);
initGuildsAPI(rootRouter);
initArchives(rootRouter);
initDocs(rootRouter);
```

Press Ctrl-X, Y, and Enter to save and close.

#### Embeds in Tags

Tags in the current code are text only. In order to use embeds, some code needs to be changed.

`nano Zeppelin/backend/src/plugins/Tags/types.ts`

Look for `export const zTag = z.union([z.string(), zEmbedInput]);`

Change it to

```
const zEmbeds = z.object({ embeds: z.array(zEmbedInput) });
export const zTag = z.union([z.string(), zEmbeds]);
```

Press Ctrl-X, Y, and Enter to save and close.
-->

### Configure Zeppelin

Expand All @@ -198,16 +151,16 @@ Press Ctrl-X, Y, and Enter to save and close.
This is your group's ID. You'll need it in the next step
4. `nano .env`
This opens nano, a text editor, editing .env. The subpoints lay out the values you need to fill in. Ignore the rows that are not mentioned below.

- `KEY`: This is an encryption key used to encrypt certain data in the database.
- Paste in the key you obtained from the openssl command in Step 3 above.
- It should be 32 characters long, letters and numbers only.
- `CLIENT_ID`: This is the ID of the bot you created above in the Discord developer portal.
- `CLIENT_SECRET`: This is the secret from the Oauth page in the Discord developer portal
- `BOT_TOKEN`: This is the bot token from the Bot page in the Discord developer portal.
- `DASHBOARD_URL`: This is the URL you and other bot managers will use to access the dashboard to manage server configs
- If you are using a domain, fill in http://DOMAIN (e.g. http://zeppelin.gg)
- if you are using an IP address, fill in http://IP
- Change http to https if you will implement SSL in some way. By default Zeppelin does not set one up.
- If you are using a domain, fill in https://DOMAIN (e.g. https://zeppelin.gg)
- if you are using an IP address, fill in https://IP
- `API_URL`: This is used by the dashboard to access the bot internals; also used by Discord to redirect you back to the dashboard after you log in.
- Use your dashboard URL, but add `/api` at the end (e.g. https://zeppelin.gg/api)
- `STAFF`: These are staff to help manage the bot itself. These are not server staff that would manage bot configs.
Expand All @@ -217,10 +170,11 @@ Press Ctrl-X, Y, and Enter to save and close.
- `DEFAULT_ALLOWED_SERVERS`: Normally servers need to be allowed before the bot can be added to it. Otherwise it leaves. This indicates the first server that the bot could be added to, where administrative commands can be run to allow other servers.
- This usually will not be the server with normal members where Zeppelin will be used, but some kind of test server first.
- Fill in the Discord server's ID.
- `PHISHERMAN_API_KEY`: Phisherman is a live database used for identifying malicious, scam, and phishing links. Uncomment the row if you have an api key and paste the api key at the end.
- `FISHFISH_API_KEY`: FishFish is a live database used for identifying malicious, scam, and phishing links. Uncomment the row if you have an api key and paste the api key at the end. **The only way to obtain an API key is to join their Discord server, which is not public at the moment**
- `DEFAULT_SUCCESS_EMOJI`, `DEFAULT_ERROR_EMOJI`: The default success/error emojis to be used. Formatted as either a unicode emoji or `<:emoji_name:emoji_id>`
- DEVELOPMENT: Skip the entire section
- STANDALONE: Fill in this section unless you already have a MySQL database service set up that you would like to use with Zeppelin. If you don't know, you don't, and fill in this section.
- STANDALONE_WEB_PORT: Leave this alone unless port 80 on the host computer is already occupied. If it is, change it to something like 81 or 82. If you change this value, go back up to DASHBOARD_URL and API_URL and add a port after the domain or IP. For example: http://zeppelin.gg:81 or http://8.8.8.8:81 for the dashboard and http://zeppelin.gg:81/api or http://8.8.8.8:81/api for the api.
- STANDALONE_WEB_PORT: Set it to `443` unless the port on the host computer is already occupied. If it is, change it to something like 442 or 81, etc. If you change this value, go back up to DASHBOARD_URL and API_URL and add a port after the domain or IP. For example: https://zeppelin.gg:442 or http://8.8.8.8:81 for the dashboard and https://zeppelin.gg:442/api or https://8.8.8.8:81/api for the api.
- STANDALONE_MYSQL_PORT: This will allow you to access the dashboard from the host computer or another computer using a program such as DBeaver.
- It does not need to be changed unless there is a port conflict with the host computer.
- STANDALONE_MYSQL_PASSWORD: Database access password for the zeppelin user.
Expand All @@ -241,13 +195,27 @@ Press Ctrl-X, Y, and Enter to save and close.

## Build and Start the bot

**NOTE**: By default, it will use prebuilt images so the `--build` argument can be omitted from the following commands, unless if you have changed the source code locally, in which case, replace

```yaml
image: dragory/zeppelin
```

with

```yaml
build:
context: .
```

for the `migrate`, `bot`, `api`, and `dashboard` containers in your respective docker-compose (standalone/lightweight).
Make sure to run the below command **every time** you update/change the source code.

- If you filled in the Standalone section in the env file:
- `docker compose -f docker-compose.standalone.yml up -d --build`
- If you filled in the Lightweight section in the env file:
- `docker compose -f docker-compose.lightweight.yml up -d --build`

**NOTE**: Make sure to run the above command every time you update/change the source code.

The bot will pull images and build other images, create the containers, and start them. It will probably take about a minute or two to start.

That's it! The bot should be fully functional. The dashboard should be accessible at http://IP_OR_DOMAIN. If there are any issues, or to see sample configs, please visit the Zeppelin support Server or self-hosting server.
Loading