mirror of
https://github.com/YGGverse/next.git
synced 2026-03-31 17:55:34 +00:00
3 KiB
3 KiB
next
PHP 8 server for different protocols
Based on Ratchet asynchronous socket library
Features
- Async socket
- Multi-host
- Multi-protocol:
- Connection event log
- Optional:
- file navigation on directory request
- custom index name
- custom failure template
- Simple and flexible server configuration by CLI arguments
Install
git clone https://github.com/YGGverse/next.gitcd next- navigate into the project directorycomposer update- grab latest dependencies
Launch
Start
Create as many servers as wanted by providing different type, host, port and other arguments!
- for security reasons,
nextserver prevents any access to the hidden files (started with dot) - also, clients can't access any data out the
rootpath, that defined on server startup
Startup example:
php src/server.php type=nex host=127.0.0.1 port=1900 root=/target/dir
hostandport- optional arguments, read Arguments documentation for details!
Arguments
Default argument values depending of server protocol selected.
Some arguments also defined in default.json file. Do not change this file without understanding, use CLI instead!
Required
type- server protocol, also auto-defines defaultport, supported options:nex- NEX Protocol
root- absolute path to the public directory, where browser navigation starting from
Optional
host- default is127.0.0.1e.g.localhostconnections onlyport- default value depends of servertypeselected, for example1900fornexor1965forgeminifile- index file name that server try to open on directory path requested, disabled by defaultlist- show content listing in the requested directory (when indexfilenot found), enabled by defaulttime- show file modification time as the alt text in directory listing (useful for gemfeed), disabled by defaultfail- absolute path to the failure template (e.g./path/to/error.gmi), disabled by defaultdump-enableordisableserver debug feature, enabled by default
Autostart
systemd
Following example mean you have next server installed into home directory of next user (useradd -m next)
# /etc/systemd/system/next.service
[Unit]
After=network.target
[Service]
Type=simple
User=next
Group=next
ExecStart=/usr/bin/php /home/next/next/src/server.php type=nex root=/home/next/public
StandardOutput=file:/home/next/debug.log
StandardError=file:/home/next/error.log
Restart=on-failure
[Install]
WantedBy=multi-user.target
systemctl daemon-reload- reload systemd configurationsystemctl enable next- enable service on system startupsystemctl start next- start server