<imgsrc="./Wave/Assets/Wave%20Logo%20Transparent.png"alt=""width="300"/># Wave
## The Open Source Blogging Engine
![](https://img.shields.io/github/license/miawinter98/Wave?color=green)
![](https://img.shields.io/github/forks/miawinter98/Wave?label=github%20forks&logo=github)
![](https://img.shields.io/github/stars/miawinter98/Wave?label=github%20stars&color=yellow&logo=github)
![](https://img.shields.io/docker/pulls/miawinter/wave?color=informational&logo=docker)
![](https://img.shields.io/docker/stars/miawinter/wave?color=yellow&logo=docker)
⚠ Under Construction ⚠
alpha-14 image available for the brave
## Quickstart
This docker compose file will give you everything you need to run Wave. See the following
sections for explanations about the configuration and makeup of Wave. Replace <*_password>
with generated passwords, just in case, replace your-time-zone with a sensible time zone
for your users.
For extensive configuration you want to mount `/configuration` to a location on your system.
Afterwards you can access Wave on `http://localhost`.
To see how to create an admin account, read the following section. Afterwards for security
you should [Configure an Email Server](#configuring-email).
```
version: '3.4'
name: wave
services:
web:
image: miawinter/wave:alpha-14
restart: unless-stopped
ports:
- "80:8080"
links:
- database:db
environment:
- "TZ=<your-time-zone>"
- "WAVE_ConnectionStrings__DefaultConnection=Host=db; Username=wave; Password=<db_password>"
- "WAVE_ConnectionStrings__Redis=redis,password=<redis_password>"
volumes:
- wave-files:/app/files
- wave-config:/configuration
networks:
- wave
depends_on:
- database
database:
image: postgres:16.1-alpine
restart: unless-stopped
environment:
- "POSTGRES_DB=wave"
- "POSTGRES_USER=wave"
- "POSTGRES_PASSWORD=<db_password>"
volumes:
- wave-db:/var/lib/postgresql/data
networks:
- wave
redis:
image: redis:7-alpine
restart: unless-stopped
command: redis-server --requirepass <redis_password> --save 60 1 --loglevel warning
volumes:
- wave-redis:/data
networks:
- wave
volumes:
wave-files:
wave-config:
wave-db:
wave-redis:
networks:
wave:
```
Note: when binding the files volume to a local directory, keep in mind Wave runs by default on an
internal "App" user, not root. So you need to adjust your directory permissions or docker compose file
accordingly (or just slap `chmod -R 777` on it).
### Admin Access
When Wave does not detect any admin account in it's database on startup , which usually happens during
setup, a message will be printed to it's server console, in docker accessible with `docker logs wave-web-1`:
`There is currently no user in your installation with the admin role, go to /Admin and use the following password to self promote your account: [password]`
The password is 16 digits long, navigate to `http://localhost/Admin`, if you are not logged in you will be redirected to
the login page. Once you are authenticated and have entered the password on the admin page, the tool will be disabled and
you will be a member of the Admin role, giving you full access to all of Waves' features. Keep in mind that the password
is generated every time on startup as long as there is no admin, so if you restart the container, there will be a different
password in the console.
## Configuring Wave
Wave allows you to configure it in many different formats and in multiple places, and
you can even use multiple of the following methods to supply configuration information.
Please keep in mind that first, asp.net configuration keys are case-insensitive, and second,
that there is a precedence in the different formats, so a value for the same key in two
formats will be overwritten by one.
### Configuration Locations
There are two main locations where Wave (and asp.net) takes it's configuration from:
The Environment, and the `/configuration` volume. Environment variables a