• Stars
    star
    423
  • Rank 98,734 (Top 3 %)
  • Language
    PHP
  • License
    GNU Affero Genera...
  • Created 12 months ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Open-Source Solution for Server Provisioning and Zero-Downtime PHP Deployment

Eddy Server Management 🛡️

run-tests Splade Discord Server GitHub Sponsors MadeWithLaravel.com shield

Eddy is an open-source deployment tool built with Splade that allows users to deploy PHP applications with zero downtime using the Caddy web server.

Eddy supports easy server provisioning using Ubuntu 22.04 LTS and can start servers quickly from popular providers such as DigitalOcean, Hetzner, or any custom provider. Eddy also features automatic SSL certificate renewal, automatic security updates, and the ability to manage cron jobs, daemon processes, and firewall rules. It supports Database and File backups to S3, FTP, and SFTP destinations with custom schedules, automatic cleanup, and notifications. Additionally, users can manage MySQL databases and run multiple PHP versions on a single server.

Eddy Server Management is a Protone Media product.

Features ✨

  • Deploy PHP apps with zero downtime and powered by Caddy web server.
  • Deploy from Github or any Git repository with ease.
  • Provision servers using Ubuntu 22.04 LTS.
  • Start servers quickly from DigitalOcean, Hetzner, or your preferred provider.
  • Keep your SSL certificates up-to-date with automatic renewal.
  • Keep your servers secure with automatic updates.
  • Run multiple PHP versions on a single server.
  • Easily manage your MySQL databases and users.
  • Manage cron jobs, daemon processes, and firewall rules.
  • Database and File backups to S3, FTP, and SFTP destinations.
  • Customize your deployment process with support for custom deployment scripts.
  • Edit configuration files directly from the web interface.
  • Quickly access both your server and application logs directly from the web interface.

Eddy is built with the Jetstream starter kit, so it also comes with:

  • Team management
  • Two-factor authentication
  • Email verification
  • A fully responsive design built with Tailwind CSS

Why is this open-source? 🔓

Eddy was created to show off the capabilities of Splade. As a real-life app, Eddy perfectly showcases some of Splade's key features, including the ability to build Single-Page Applications with Blade templates, Modal and Event capabilities, and Form and Table components.

Although Eddy is an open-source project, you have the option to use the hosted service at eddy.management. Choosing the hosted service not only provides you with the convenience of not having to host it yourself, but it also supports the continued development of Eddy and Splade. However, hosting it yourself is also an option.

Since Eddy is open-source, you can easily contribute to the project by submitting pull requests. This gives you the added benefit of being able to see exactly how the app works and interacts with your server. Don't hesitate to get involved and help make Eddy and Splade even better!

Requirements ⚙️

Eddy is a regular Laravel 10 application, so it can be installed on any server that meets the Laravel server requirements. In addition to the Laravel requirements, Eddy requires the following:

  • Redis, as Eddy uses Laravel Horizon
  • timeout to run commands with a timeout
  • (optional) beautysh to format shell scripts
  • (optional) caddy to format a Caddyfile

Local development 💻

Eddy features built-in support for Vagrant, allowing for easy local server provisioning without the need to start up servers with a cloud provider. To make Eddy publicly accessible for server connections, you can use tools like Expose, Ngrok or Cloudflare Tunnel.

How is Eddy different from alternatives? 🤔

Eddy sets itself apart from other solutions by being completely open-source, giving you the freedom to host it yourself and see exactly how it works. In fact, the hosted version of Eddy runs on the exact same code as the open-source version. While Eddy is still relatively new and may not be as feature-rich as some alternatives, our goal is to rapidly expand its capabilities over time.

Contributing 🤝

Thank you for considering contributing to Eddy! Our project follows the Laravel coding style and conventions as closely as possible. Here are some guidelines to help you get started:

Structure and Maintanability

  • Avoid adding new dependencies unless absolutely necessary.
  • Use the __() helper function instead of hardcoding translations.
  • Each Eloquent model should have a sensible Database Factory.
  • Use Events primarily to broadcast changes to the frontend, and avoid Listeners for simple tasks.
  • Use Queued Jobs to perform long-running tasks. Notify users that a task is running.
  • Use Notifications to send emails to users, or a Mailable when it's unimaginable that a notification would be sent to anything other than the mail channel.
  • Don't worry too much about striving for slim controllers. Controllers can have a few extra lines of code to improve code readability, but try to stick to CRUD actions unless necessary.
  • Don't bring HTTP request logic into areas other than the controller. For example, don't use the Auth or Request facade in a model or a service class.
  • Don't use inline Validation rules, but create a dedicated Rule class instead.
  • Validate requests in the controller when possible, and use Form Requests when validation rules are more complex.
  • Prefer enums over constants.

Security and Performance

  • Encrypt all sensitive data in Eloquent models.
  • Each Eloquent model should have a corresponding Policy to handle authorization.
  • Each Eloquent model should have a corresponding Resource to handle serialization.
  • Although we're not a fan of Eloquent's Mass Assignment protection, we do use them in Eddy as it's generally considered a best practice.
  • All non-GET routes should insert an ActivityLog entry.
  • Always use pagination on index pages.
  • The following Eloquent protections are enabled by default
    • Prevent Lazy Loading to avoid N+1 queries
    • Prevent silently discarding attributes
    • Prevents accessing missing attributes
    • Require a morph map when using polymorphic relations

Frontend

  • Write sensible error messages.
  • Use ULIDs instead of auto-incrementing IDs.
  • Avoid creating custom Vue components unless necessary, and use Splade's components as much as possible.

Security Vulnerabilities

If you discover a security vulnerability within Eddy, please send an e-mail to Eddy via [email protected]. All security vulnerabilities will be promptly addressed.

License

Eddy is open-sourced software licensed under the AGPL-3.0 License.

More Repositories

1

laravel-ffmpeg

This package provides an integration with FFmpeg for Laravel. Laravel's Filesystem handles the storage of the files.
PHP
1,511
star
2

laravel-splade

💫 The magic of Inertia.js with the simplicity of Blade 💫 - Splade provides a super easy way to build Single Page Applications (SPA) using standard Laravel Blade templates, and sparkle it to make it interactive. All without ever leaving Blade.
PHP
1,382
star
3

laravel-cross-eloquent-search

Laravel package to search through multiple Eloquent models. Supports sorting, pagination, scoped queries, eager load relationships and searching through single or multiple columns.
PHP
990
star
4

laravel-form-components

A set of Blade components to rapidly build forms with Tailwind CSS (v1.0 and v2.0) and Bootstrap 4/5. Supports validation, model binding, default values, translations, Laravel Livewire, includes default vendor styling and fully customizable!
PHP
807
star
5

inertiajs-tables-laravel-query-builder

Inertia.js Tables for Laravel Query Builder
PHP
425
star
6

laravel-verify-new-email

This package adds support for verifying new email addresses: when a user updates its email address, it won't replace the old one until the new one is verified.
PHP
384
star
7

laravel-analytics-event-tracking

Laravel package to easily send events to Google Analytics
PHP
243
star
8

laravel-paddle

Paddle.com API integration for Laravel with support for webhooks/events
PHP
195
star
9

laravel-mixins

A collection of Laravel goodies.
PHP
135
star
10

laravel-task-runner

A package to write Shell scripts like Blade Components and run them locally or on a remote server
PHP
116
star
11

laravel-eloquent-scope-as-select

Stop duplicating your Eloquent query scopes and constraints in PHP. This package lets you re-use your query scopes and constraints by adding them as a subquery.
PHP
102
star
12

laravel-single-session

This package prevents a User from being logged in more than once. It destroys the previous session when a User logs in and thereby allowing only one session per user.
PHP
101
star
13

laravel-xss-protection

Laravel XSS Protection Middleware
PHP
99
star
14

laravel-guidelines

Not necessarily coding standards (naming conventions, avoid else, etc.), but more like 'app'-guidelines - things you don't want to forget.
PHP
91
star
15

laravel-api-health

Monitor first and third-party services and get notified when something goes wrong!
PHP
87
star
16

form-components-pro

A set of Vue 3 components to rapidly build forms with Tailwind CSS 3. It supports validation, model binding, integrates with Autosize/Choices.js/Flatpickr, includes default vendor styling and is fully customizable! Even better in conjunction with Laravel Jetstream + Inertia.js.
JavaScript
82
star
17

laravel-webdav

WebDAV Serivce Provider for Laravel
PHP
59
star
18

laravel-blade-on-demand

Compile Blade templates in memory
PHP
50
star
19

inertia-vue-modal-poc

Proof of Concept: Load any route into a modal with Inertia.js
Vue
49
star
20

laravel-splade-core

A package to use Vue 3's Composition API in Laravel Blade components.
PHP
42
star
21

laravel-eloquent-where-not

This Laravel package allows you to flip/invert an Eloquent scope, or really any query constraint.
PHP
27
star
22

laravel-content

You provide the WYSIWYG editor, Media uploader, etc., and the package handles the validation, multi-language, storage, caching, sanitizing, etc.
PHP
23
star
23

inertiajs-events-laravel-dusk

Inertia.js Events for Laravel Dusk
PHP
22
star
24

laravel-dusk-fakes

Persistent Fakes for Laravel Dusk
PHP
17
star
25

laravel-minio-testing-tools

This package provides a trait to run your tests against a MinIO S3 server.
PHP
11
star
26

splade.dev

Source code for https://splade.dev
PHP
8
star
27

laravel-splade-docs

7
star
28

laravel-viewi

[WIP] Viewi for Laravel proof-of-concept: Build full-stack and completely reactive user interfaces with PHP.
PHP
5
star
29

eddy-backup-cli

Backup CLI for Eddy Server Management
PHP
3
star
30

form-components-pro-docs

A set of Vue components to rapidly build forms with Tailwind CSS v2.0. It supports validation, model binding, includes default vendor styling and is fully customizable!
JavaScript
3
star
31

laravel-tracer

[WIP] Trace authenticated users
PHP
2
star
32

eddy-filesystem-cli

PHP
1
star
33

laravel-ffmpeg-demo-app

A demo app to show all the cool things you can do with Laravel FFmpeg
1
star
34

php-apple-mapkit-token

Create a MapKit JS Token with PHP
1
star
35

laravel-browser-kit-macro

A macro to use the Laravel 5.3 testing layer inside your Laravel >5.3 tests
PHP
1
star
36

laravel-splade-plugin-skeleton

PHP
1
star