A web based Wake-on-LAN Server for managing servers in your home network!
The main use for Waky is to be able to manage computers/servers in your home.
I manage a shared server which a few other people, including myself, use. To make sure the server doesn't waste electricity, one can "use" the server to block others from shutting it down. The last person to have the server in use can then shutdown the server once they're finished.
To install Waky you can use the provided Docker images.
version: '3'
services:
waky:
container_name: waky
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
# Change if you access on a different URL
- APP_URL=http://localhost
- PUSHER_HOST=localhost
# Uncomment if you want to use ports other than 80 & 443
# - HTTP_PORT=8080
# - HTTPS_PORT=8443
volumes:
- '/etc/localtime:/etc/localtime:ro'
- './data/config:/config' # Directory for sqlite database & .env
- './data/ssl/web:/etc/ssl/web' # Directory for ssl certificates
- 'waky-storage:/var/www/html/storage'
image: 'ghcr.io/quadrubo/waky:latest'
network_mode: host
restart: unless-stopped
volumes:
waky-storage:
Note: You should change the image version from latest
to the one currently available so you don't get surprised by a new major version. Note that you have to update waky by changing the tag.
Example: image: 'ghcr.io/quadrubo/waky:v0.2.0'
.
Run docker compose up
to start the application.
You can now login to your instance with the user below. Once authenticated, it is recommended to change your email and password.
Username | Password |
---|---|
admin@example.com | password |
Warning: This account will be recreated if there are no users in the system.
These instructions will give you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on deploying the project on a live system.
These instructions are focused on running the project with Docker. Docker and Docker Compose need to be installed on your system to proceed. This project assumes you will be using Laravel Sail as your development environment.
I also assume that you configured the sail alias. If not, just replace sail
with ./vendor/bin/sail
while installing.
First clone the project to your local system.
git clone https://github.com/Quadrubo/waky
Install the composer dependencies using Laravel Sail.
Copy the environment file.
cp .env.sail.example .env
Start the container.
sail up
Generate the app key.
sail artisan key:generate
Run the database migrations.
sail artisan migrate
Seed the database.
sail artisan db:seed --class DevelopmentSeeder
Running the scheduler.
The scheduler is responsible for starting the jobs in regular intervals.
sail artisan schedule:work
Running the websocket server. The websocket server is responsible for providing realtime notifications.
sail artisan websockets:serve
Running the queue.
The queue is responsilbe for executing the jobs like pinging the computers.
sail artisan queue:work
sail artisan queue:work --queue notifications
Install the npm dependencies.
sail npm install
Start the vite development environment.
sail npm run dev
You should now be able to access the site on http://localhost
. 2 test users have been created for you.
Username | Password | |
---|---|---|
admin | admin@admin.admin | admin123 |
user | user@user.user | user1234 |
The admin user has access to the admin panel and can create computers. The user user has no specific permissions.
You can access the admin panel at /admin
.
The project is a pretty simple Laravel app, built using Filament.
Discord Webhook Notification support is build in. Just create a webhook on your discord server and set the DISCORD_WEBHOOK_URL
variable in your .env
file.
This sends you notifications when a computer switches from no to one or one to no users.
sail test
- Laravel - Framework
All contributions are welcome! Just fork the project. Setup the development environment and create a branch for your fix or feature :)
- Quadrubo
- Billie Thompson - Provided README Template
See also the list of contributors who participated in this project.
This project is licensed under the GNU Affero General Public License v3.0.