1
0
Fork 0
mirror of https://github.com/binwiederhier/ntfy.git synced 2025-06-13 08:03:17 +02:00

WIP: Develop docs

This commit is contained in:
Philipp Heckel 2022-03-16 22:33:23 -04:00
parent 470d11f442
commit 5b10f51af1
2 changed files with 97 additions and 29 deletions

View file

@ -1,16 +1,72 @@
# Building
!!! info
These instructions are pretty rough. My apologies for that. Please help improve them my letting me
know in a [GitHub issue](https://github.com/binwiederhier/ntfy/issues).
## ntfy server
The ntfy server source code is available [on GitHub](https://github.com/binwiederhier/ntfy).
The ntfy server source code is available [on GitHub](https://github.com/binwiederhier/ntfy). The codebase for the
server consists of three components:
* **The main server and API** is written in [Go](https://go.dev/) (so you'll need Go). Its main entrypoint is at
[main.go](https://github.com/binwiederhier/ntfy/blob/main/main.go), and the meat you're likely interested in is
in [server.go](https://github.com/binwiederhier/ntfy/blob/main/server/server.go). Notably, the server uses a
[SQLite](https://sqlite.org) library called [go-sqlite3](https://github.com/mattn/go-sqlite3), which requires
[Cgo](https://go.dev/blog/cgo) and `CGO_ENABLED=1` to be set. Otherwise things will not work (see below).
* **The documentation** is generated by [MkDocs](https://www.mkdocs.org/) and [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/),
which is written in [Python](https://www.python.org/). You'll need Python and MkDocs (via `pip`) only if you want to
build the docs.
* **The web app** is written in [React](https://reactjs.org/), using [MUI](https://mui.com/). If you want to modify the
web app, you need [nodejs](https://nodejs.org/en/) (for `npm`) to install all the 100,000 dependencies (*sigh*).
All of these components are built and then **baked into one binary**.
### Requirements
* [Go](https://go.dev/) (required for main server)
* [gcc](https://gcc.gnu.org/) (required main server, for SQLite cgo-based bindings)
* [Make](https://www.gnu.org/software/make/) (required for convenience)
* [libsqlite3/libsqlite3-dev](https://www.sqlite.org/) (required for main server, for SQLite cgo-based bindings)
* [GoReleaser](https://goreleaser.com/) (required for a proper main server build)
* [Python](https://www.python.org/) (for `pip`, only to build the docs)
* [nodejs](https://nodejs.org/en/) (for `npm`, only to build the web app)
### Check out the code & install dependencies
Check out via git:
=== "via SSH"
```
git clone git@github.com:binwiederhier/ntfy.git
cd ntfy
```
=== "via HTTPS"
```
git clone https://github.com/binwiederhier/ntfy.git
cd ntfy
```
Then install the dependencies (this assumes Debian/Ubuntu):
```
sudo apt install build-essential libsqlite3-dev
```
To install Python/NodeJS (for docs and web app), please see instructions on their websites.
###
XXXXXXXXXXXXXXXXXXXXx
### Quick & dirty (amd64 only)
To quickly build on amd64, you can use `make build-simple`:
```
git clone git@github.com:binwiederhier/ntfy.git
cd ntfy
make build-simple
```
That'll generate a statically linked binary in `dist/ntfy_linux_amd64/ntfy`.
That'll generate a statically linked binary in `dist/ntfy_linux_amd64/ntfy`. This binary will **not include the docs
or the web app**. To include that
For all other platforms (including Docker), and for production or other snapshot builds, you should use the amazingly
awesome [GoReleaser](https://goreleaser.com/) make targets:
@ -39,7 +95,7 @@ The Android app has two flavors:
First check out the repository:
```
git clone git@github.com:binwiederhier/ntfy-android.git
git clone git@github.com:binwiederhier/ntfy-android.git # or: https://github.com/binwiederhier/ntfy-android.git
cd ntfy-android
```