mirror of
https://github.com/PhyreApps/PhyrePanel.git
synced 2025-04-21 11:53:39 +00:00
Compare commits
131 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
feaf2e2e53 | ||
![]() |
ca2320d814 | ||
![]() |
e4bbe14d22 | ||
![]() |
017cc606e4 | ||
![]() |
253bbc5d29 | ||
![]() |
4dac3e94b6 | ||
![]() |
da16176eb8 | ||
![]() |
0d04d49b22 | ||
![]() |
81644287b5 | ||
![]() |
de9c2d774b | ||
![]() |
0ca205963d | ||
![]() |
ae5147bdb1 | ||
![]() |
f3e462e1c2 | ||
![]() |
7cfd6129ed | ||
![]() |
b50571fc22 | ||
![]() |
419e941397 | ||
![]() |
7fcca4f35a | ||
![]() |
cd6af66256 | ||
![]() |
c05545c631 | ||
![]() |
855b4e31c8 | ||
![]() |
fb866221fd | ||
![]() |
d1575a43a3 | ||
![]() |
e4718323be | ||
![]() |
2fe31c7c30 | ||
![]() |
3068292054 | ||
![]() |
ccb60d378e | ||
![]() |
4a4f18f2f8 | ||
![]() |
e1a423e975 | ||
![]() |
9a3e18468b | ||
![]() |
6891b398c5 | ||
![]() |
eb3f2d2803 | ||
![]() |
e891eed89d | ||
![]() |
ee669c1c65 | ||
![]() |
36a43cf767 | ||
![]() |
96353958aa | ||
![]() |
ef9fb0ce4a | ||
![]() |
126a0977d2 | ||
![]() |
d7ad9b8016 | ||
![]() |
12ff24788f | ||
![]() |
1027cd07b6 | ||
![]() |
0c2e03cdb6 | ||
![]() |
90265e9339 | ||
![]() |
df1e5505b4 | ||
![]() |
74cafabdb9 | ||
![]() |
1f58351010 | ||
![]() |
29d8172110 | ||
![]() |
726202d057 | ||
![]() |
2a6e395514 | ||
![]() |
1cb955b6d6 | ||
![]() |
64b0c73fdc | ||
![]() |
f825d63b91 | ||
![]() |
55c98cf6de | ||
![]() |
71222928b9 | ||
![]() |
ad9f885235 | ||
![]() |
ad81ba4e12 | ||
![]() |
5a96af2d27 | ||
![]() |
85e8c3781a | ||
![]() |
0fc0055ac3 | ||
![]() |
276e626df1 | ||
![]() |
f4076677d1 | ||
![]() |
4d8ffe00d1 | ||
![]() |
771ba59ea9 | ||
![]() |
3381394009 | ||
![]() |
e5725a94a8 | ||
![]() |
17c37eef1b | ||
![]() |
d3745f24ae | ||
![]() |
04b1c880df | ||
![]() |
e5591576fe | ||
![]() |
2ba5ecbc7c | ||
![]() |
5d9e96bcf3 | ||
![]() |
13ac4e603d | ||
![]() |
cc229b6ce5 | ||
![]() |
2b918a5116 | ||
![]() |
cfab2284fb | ||
![]() |
14d63de60c | ||
![]() |
386ff1242c | ||
![]() |
235161f014 | ||
![]() |
bb24afcd62 | ||
![]() |
2e16714685 | ||
![]() |
792602a572 | ||
![]() |
164e9590ff | ||
![]() |
006afa3aa5 | ||
![]() |
ce3bb2b609 | ||
![]() |
a7ddd77f10 | ||
![]() |
15bfb0e788 | ||
![]() |
c76c018f67 | ||
![]() |
a178a72e7a | ||
![]() |
022bc67fe8 | ||
![]() |
9f294b0bf3 | ||
![]() |
49e2418469 | ||
![]() |
0db80728e1 | ||
![]() |
c42b143867 | ||
![]() |
06e792b5dc | ||
![]() |
09240080a0 | ||
![]() |
8d92fed232 | ||
![]() |
ef1b4d325a | ||
![]() |
3cf9d1cc4b | ||
![]() |
8e9abe546c | ||
![]() |
851a155894 | ||
![]() |
bb2fa1a0a4 | ||
![]() |
04eb1c7e3d | ||
![]() |
afc87ede66 | ||
![]() |
d6c85dc426 | ||
![]() |
295f29af85 | ||
![]() |
bca5682070 | ||
![]() |
c93f8c5671 | ||
![]() |
9d4c005269 | ||
![]() |
93716d3379 | ||
![]() |
d993926142 | ||
![]() |
0ee005948d | ||
![]() |
453de79e75 | ||
![]() |
8cf10cb488 | ||
![]() |
e3653b4883 | ||
![]() |
1266a854ea | ||
![]() |
f20f21bf11 | ||
![]() |
c3cc2be24a | ||
![]() |
bff4a7e6f4 | ||
![]() |
78bbe763ef | ||
![]() |
6c24c44d5e | ||
![]() |
ba6f4a635c | ||
![]() |
f77503b786 | ||
![]() |
d75d7f0787 | ||
![]() |
55fc6a7af4 | ||
![]() |
a3278130b8 | ||
![]() |
296247008e | ||
![]() |
1d38f7c008 | ||
![]() |
5a02f9ac46 | ||
![]() |
3b93dcf070 | ||
![]() |
f0c4d090ab | ||
![]() |
68fb3724db | ||
![]() |
7695c5f7ea |
201 changed files with 13327 additions and 2972 deletions
4
.github/workflows/app-unit-test.yml
vendored
4
.github/workflows/app-unit-test.yml
vendored
|
@ -8,7 +8,7 @@ jobs:
|
|||
phyre-panel-unit-test:
|
||||
strategy:
|
||||
matrix:
|
||||
os: [ubuntu-22.04, ubuntu-20.04]
|
||||
os: [ubuntu-24.04, ubuntu-22.04]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
|
@ -41,7 +41,7 @@ jobs:
|
|||
sudo wget https://getcomposer.org/download/latest-stable/composer.phar
|
||||
sudo COMPOSER_ALLOW_SUPERUSER=1 phyre-php composer.phar install
|
||||
|
||||
sudo /phyre-panel/install_web.sh
|
||||
sudo /phyre-panel/install_web.sh --dont-ask
|
||||
sudo phyre-php artisan test --filter HostingSubscriptionsTest
|
||||
|
||||
compile-phyre-web-panel:
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -19,3 +19,6 @@ web/phyre-config.ini
|
|||
.idea/modules.xml
|
||||
.idea/deployment.xml
|
||||
/web/Modules/Microweber/vendor/
|
||||
.aider*
|
||||
/.vscode
|
||||
.env
|
||||
|
|
|
@ -19,6 +19,12 @@
|
|||
<a href="https://codecov.io/gh/PhyreApps/PhyrePanel"><img src="https://codecov.io/gh/PhyreApps/PhyrePanel/graph/badge.svg?token=BO0RTPLS4W"/></a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://www.buymeacoffee.com/phyre" style="display: inline-block;margin: 15px 0px;">
|
||||
<img src="https://img.buymeacoffee.com/button-api/?text=Support Phyre Panel&emoji=&slug=phyre&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff" alt="Support Phyre Panel" style="height: 40px !important; ">
|
||||
</a>
|
||||
</p>
|
||||
|
||||

|
||||
## About PHYRE PANEL
|
||||
|
||||
|
|
|
@ -1,13 +1,99 @@
|
|||
# syntax=docker/dockerfile:1
|
||||
# --------------------------------------------------
|
||||
# 1) Base Image
|
||||
# --------------------------------------------------
|
||||
FROM ubuntu:24.04
|
||||
|
||||
FROM ubuntu:22.04 AS production
|
||||
# So apt doesn't prompt us
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update && apt-get install -yq wget
|
||||
RUN ls -la
|
||||
RUN wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/install.sh -O phyre-install.sh
|
||||
RUN chmod +x phyre-install.sh
|
||||
RUN ./phyre-install.sh
|
||||
# --------------------------------------------------
|
||||
# 2) Install base dependencies
|
||||
# --------------------------------------------------
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
wget \
|
||||
curl \
|
||||
netcat \
|
||||
mysql-client \
|
||||
unzip \
|
||||
gnupg2 \
|
||||
lsb-release \
|
||||
apt-transport-https \
|
||||
software-properties-common \
|
||||
libpng-dev \
|
||||
libwebp-dev \
|
||||
libjpeg-turbo8 \
|
||||
libfreetype6 \
|
||||
supervisor && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY entrypoint.sh /usr/local/phyre/entrypoint.sh
|
||||
# --------------------------------------------------
|
||||
# 3) Install Phyre .deb packages
|
||||
# --------------------------------------------------
|
||||
# 3.1 - Add any system libs needed by Phyre (from your script):
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends \
|
||||
openssl \
|
||||
libonig-dev \
|
||||
libzip-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libsodium23 \
|
||||
libpq5 \
|
||||
libssl-dev \
|
||||
zlib1g-dev && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
ENTRYPOINT ["sh","/usr/local/phyre/entrypoint.sh"]
|
||||
WORKDIR /phyre/install
|
||||
|
||||
# 3.2 - Install Phyre PHP
|
||||
RUN wget -q https://github.com/PhyreApps/PhyrePanelPHP/raw/main/compilators/debian/php/dist/phyre-php-8.2.0-ubuntu-22.04.deb && \
|
||||
dpkg -i phyre-php-8.2.0-ubuntu-22.04.deb || (apt-get install -f -y && dpkg -i phyre-php-8.2.0-ubuntu-22.04.deb) && \
|
||||
rm -f phyre-php-8.2.0-ubuntu-22.04.deb
|
||||
|
||||
# 3.3 - Install Phyre NGINX
|
||||
RUN wget -q https://github.com/PhyreApps/PhyrePanelNGINX/raw/main/compilators/debian/nginx/dist/phyre-nginx-1.24.0-ubuntu-22.04.deb && \
|
||||
dpkg -i phyre-nginx-1.24.0-ubuntu-22.04.deb || (apt-get install -f -y && dpkg -i phyre-nginx-1.24.0-ubuntu-22.04.deb) && \
|
||||
rm -f phyre-nginx-1.24.0-ubuntu-22.04.deb && \
|
||||
ln -s /usr/local/phyre/nginx/sbin/phyre-nginx /usr/local/phyre/nginx/sbin/nginx
|
||||
|
||||
# --------------------------------------------------
|
||||
# 4) Symlink & SSL setup
|
||||
# --------------------------------------------------
|
||||
RUN ln -s /usr/local/phyre/php/bin/php /usr/bin/phyre-php
|
||||
|
||||
RUN mkdir -p /usr/local/phyre/ssl && \
|
||||
wget -q https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/server/ssl/phyre.crt -O /usr/local/phyre/ssl/phyre.crt && \
|
||||
wget -q https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/server/ssl/phyre.key -O /usr/local/phyre/ssl/phyre.key && \
|
||||
chmod 644 /usr/local/phyre/ssl/phyre.crt && \
|
||||
chmod 600 /usr/local/phyre/ssl/phyre.key
|
||||
|
||||
# --------------------------------------------------
|
||||
# 5) Download Phyre Web Panel
|
||||
# --------------------------------------------------
|
||||
RUN wget -q https://github.com/PhyreApps/PhyrePanelWebCompiledVersions/raw/main/phyre-web-panel.zip && \
|
||||
unzip -qq -o phyre-web-panel.zip -d /usr/local/phyre/web && \
|
||||
rm -rf phyre-web-panel.zip
|
||||
|
||||
# --------------------------------------------------
|
||||
# 6) Add a custom entrypoint script
|
||||
# that will configure Phyre and run Nginx in foreground
|
||||
# --------------------------------------------------
|
||||
WORKDIR /usr/local/phyre/web
|
||||
|
||||
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
|
||||
|
||||
# Supervisord config (optional if you want to manage multiple processes)
|
||||
# (But here we can simply run Phyre Nginx in the foreground)
|
||||
#COPY supervisord.conf /etc/supervisor/conf.d/phyre-supervisor.conf
|
||||
|
||||
# Expose HTTP (80) and HTTPS (8443)
|
||||
EXPOSE 80 8443
|
||||
|
||||
# --------------------------------------------------
|
||||
# 7) Set up final Docker config
|
||||
# --------------------------------------------------
|
||||
# We'll run our entrypoint which configures the panel, then runs Nginx
|
||||
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
|
||||
CMD ["phyre-php", "--version"]
|
||||
|
|
46
docker/docker-compose.yml
Normal file
46
docker/docker-compose.yml
Normal file
|
@ -0,0 +1,46 @@
|
|||
version: '3.8'
|
||||
|
||||
services:
|
||||
db:
|
||||
image: mysql:8.0
|
||||
container_name: phyre-db
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: exampleRootPass
|
||||
MYSQL_DATABASE: phyrepanel
|
||||
MYSQL_USER: phyre
|
||||
MYSQL_PASSWORD: examplePhyrePass
|
||||
volumes:
|
||||
- db_data:/var/lib/mysql
|
||||
ports:
|
||||
- "3306:3306"
|
||||
networks:
|
||||
- phyre_net
|
||||
|
||||
phyre-app:
|
||||
build: .
|
||||
container_name: phyre-app
|
||||
depends_on:
|
||||
- db
|
||||
ports:
|
||||
- "8443:8443"
|
||||
- "8080:80"
|
||||
environment:
|
||||
# These environment variables are used by our entrypoint
|
||||
DB_HOST: db
|
||||
DB_PORT: 3306
|
||||
DB_DATABASE: phyrepanel
|
||||
DB_USERNAME: phyre
|
||||
DB_PASSWORD: examplePhyrePass
|
||||
# Additional app settings
|
||||
APP_ENV: local
|
||||
APP_URL: "https://localhost:8443"
|
||||
APP_NAME: PhyrePanel
|
||||
networks:
|
||||
- phyre_net
|
||||
|
||||
volumes:
|
||||
db_data:
|
||||
|
||||
networks:
|
||||
phyre_net:
|
||||
driver: bridge
|
|
@ -1,4 +1,33 @@
|
|||
service mysql start
|
||||
service phyre start
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
tail -f /dev/null
|
||||
# Wait for MySQL to be ready
|
||||
echo "Waiting for database at $DB_HOST:$DB_PORT..."
|
||||
while ! nc -z $DB_HOST $DB_PORT; do
|
||||
sleep 2
|
||||
done
|
||||
echo "Database is up!"
|
||||
|
||||
# Configure environment variables
|
||||
phyre-php artisan phyre:set-ini-settings DB_DATABASE "$DB_DATABASE"
|
||||
phyre-php artisan phyre:set-ini-settings DB_USERNAME "$DB_USERNAME"
|
||||
phyre-php artisan phyre:set-ini-settings DB_PASSWORD "$DB_PASSWORD"
|
||||
phyre-php artisan phyre:set-ini-settings DB_HOST "$DB_HOST"
|
||||
phyre-php artisan phyre:set-ini-settings DB_CONNECTION "mysql"
|
||||
phyre-php artisan phyre:set-ini-settings APP_ENV "$APP_ENV"
|
||||
phyre-php artisan phyre:set-ini-settings APP_URL "$APP_URL"
|
||||
phyre-php artisan phyre:set-ini-settings APP_NAME "$APP_NAME"
|
||||
|
||||
# Generate keys, migrate, and seed
|
||||
phyre-php artisan phyre:key-generate
|
||||
phyre-php artisan migrate --force
|
||||
phyre-php artisan db:seed --force
|
||||
|
||||
# Start Nginx in foreground
|
||||
echo "Starting Nginx..."
|
||||
exec /usr/sbin/service phyre start && /usr/local/phyre/nginx/sbin/nginx -g "daemon off;"
|
||||
#exec /usr/sbin/service phyre start
|
||||
|
||||
# Start Supervisor to manage all processes
|
||||
#echo "Starting Supervisor to manage processes..."
|
||||
#exec /usr/bin/supervisord -c /etc/supervisor/conf.d/phyre-supervisor.conf
|
||||
|
|
25
docker/supervisord.conf
Normal file
25
docker/supervisord.conf
Normal file
|
@ -0,0 +1,25 @@
|
|||
[supervisord]
|
||||
nodaemon=true
|
||||
logfile=/var/log/supervisord.log
|
||||
pidfile=/var/run/supervisord.pid
|
||||
|
||||
[program:php-fpm]
|
||||
command=/bin/bash -c 'if ! ps aux | grep "[p]hp-fpm: master process" > /dev/null; then /usr/local/phyre/php/sbin/phyre-php-fpm --nodaemonize; fi'
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stdout_logfile=/var/log/php-fpm.log
|
||||
stderr_logfile=/var/log/php-fpm.err.log
|
||||
|
||||
[program:phyre]
|
||||
command=/bin/bash -c 'while ! mysqladmin ping -h "$DB_HOST" --silent; do sleep 2; done; if ! ps aux | grep "[s]ervice phyre" > /dev/null; then /usr/sbin/service phyre start; fi'
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stdout_logfile=/var/log/phyre.log
|
||||
stderr_logfile=/var/log/phyre.err.log
|
||||
|
||||
[program:phyre-nginx]
|
||||
command=/bin/bash -c 'if ! ps aux | grep "[p]hyre-nginx" > /dev/null; then /usr/local/phyre/nginx/sbin/phyre-nginx -g "daemon off;"; fi'
|
||||
autostart=true
|
||||
autorestart=true
|
||||
stdout_logfile=/var/log/phyre-nginx.log
|
||||
stderr_logfile=/var/log/phyre-nginx.err.log
|
|
@ -49,12 +49,8 @@ export default defineConfig({
|
|||
text: 'Contributing',
|
||||
link: 'https://github.com/PhyreApps/PhyrePanel/blob/main/CONTRIBUTING.md',
|
||||
},
|
||||
{
|
||||
text: 'Security policy',
|
||||
link: 'https://github.com/PhyreApps/PhyrePanel/blob/main/SECURITY.md',
|
||||
},
|
||||
],
|
||||
},
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
sidebar: [
|
||||
|
@ -64,7 +60,19 @@ export default defineConfig({
|
|||
{ text: 'Getting Started', link: '/introduction/getting-started' },
|
||||
{ text: 'Installation', link: '/install' },
|
||||
{ text: 'Requirements', link: '/introduction/requirements' },
|
||||
{ text: 'Features', link: '/introduction/features' },
|
||||
{ text: 'Features', link: '/introduction/features' }
|
||||
]
|
||||
},
|
||||
{
|
||||
text: 'Commands',
|
||||
items: [
|
||||
{ text: 'System Commands', link: '/commands/system-commands' },
|
||||
{ text: 'Installation Commands', link: '/commands/installation-commands' },
|
||||
{ text: 'SSL & Domain Management', link: '/commands/ssl-domain-management' },
|
||||
{ text: 'Backup Management', link: '/commands/backup-management' },
|
||||
{ text: 'User Management', link: '/commands/user-management' },
|
||||
{ text: 'System Configuration', link: '/commands/system-configuration' },
|
||||
{ text: 'System Update', link: '/commands/system-update' },
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
6
docs/.vitepress/dist/404.html
vendored
6
docs/.vitepress/dist/404.html
vendored
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
|||
import{R as p}from"./chunks/theme.CL3rQOXI.js";import{U as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as y,d as P,u as v,k as w,y as C,ag as R,ah as b,ai as E,a3 as S}from"./chunks/framework.B4OOrI6A.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return w(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp};
|
||||
import{R as p}from"./chunks/theme.BviEWPeY.js";import{U as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as y,d as P,u as v,k as w,y as C,ag as R,ah as b,ai as E,a3 as S}from"./chunks/framework.B4OOrI6A.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return w(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=j(),a=_();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function _(){return g(T)}function j(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{D as createApp};
|
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.DjI-dfnl.js
vendored
Normal file
1
docs/.vitepress/dist/assets/chunks/@localSearchIndexroot.DjI-dfnl.js
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/commands_backup-management.md.y8-vq9Uc.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_backup-management.md.y8-vq9Uc.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.B4OOrI6A.js";const k=JSON.parse('{"title":"Backup Management","description":"","frontmatter":{},"headers":[],"relativePath":"commands/backup-management.md","filePath":"commands/backup-management.md"}'),l={name:"commands/backup-management.md"},c=t('<h1 id="backup-management" tabindex="-1">Backup Management <a class="header-anchor" href="#backup-management" aria-label="Permalink to "Backup Management""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-create-daily-full-backup" tabindex="-1"><code>phyre:create-daily-full-backup</code> <a class="header-anchor" href="#phyre-create-daily-full-backup" aria-label="Permalink to "`phyre:create-daily-full-backup`""></a></h3><ul><li>Description: Creates a full system backup</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-backup</span></span></code></pre></div><h3 id="phyre-create-daily-full-hosting-subscriptions-backup" tabindex="-1"><code>phyre:create-daily-full-hosting-subscriptions-backup</code> <a class="header-anchor" href="#phyre-create-daily-full-hosting-subscriptions-backup" aria-label="Permalink to "`phyre:create-daily-full-hosting-subscriptions-backup`""></a></h3><ul><li>Description: Creates backups for all hosting subscriptions</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-hosting-subscriptions-backup</span></span></code></pre></div><h3 id="phyre-run-backup-checks" tabindex="-1"><code>phyre:run-backup-checks</code> <a class="header-anchor" href="#phyre-run-backup-checks" aria-label="Permalink to "`phyre:run-backup-checks`""></a></h3><ul><li>Description: Checks and manages backup status</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:run-backup-checks</span></span></code></pre></div><h3 id="phyre-run-upload-backups-to-remote-servers" tabindex="-1"><code>phyre:run-upload-backups-to-remote-servers</code> <a class="header-anchor" href="#phyre-run-upload-backups-to-remote-servers" aria-label="Permalink to "`phyre:run-upload-backups-to-remote-servers`""></a></h3><ul><li>Description: Uploads backups to configured remote servers</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:run-upload-backups-to-remote-servers</span></span></code></pre></div>',14),r=[c];function p(i,n,o,u,h,d){return s(),e("div",null,r)}const m=a(l,[["render",p]]);export{k as __pageData,m as default};
|
1
docs/.vitepress/dist/assets/commands_backup-management.md.y8-vq9Uc.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_backup-management.md.y8-vq9Uc.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.B4OOrI6A.js";const k=JSON.parse('{"title":"Backup Management","description":"","frontmatter":{},"headers":[],"relativePath":"commands/backup-management.md","filePath":"commands/backup-management.md"}'),l={name:"commands/backup-management.md"},c=t("",14),r=[c];function p(i,n,o,u,h,d){return s(),e("div",null,r)}const m=a(l,[["render",p]]);export{k as __pageData,m as default};
|
11
docs/.vitepress/dist/assets/commands_documentation.md.Dw0gpi_-.js
vendored
Normal file
11
docs/.vitepress/dist/assets/commands_documentation.md.Dw0gpi_-.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
docs/.vitepress/dist/assets/commands_documentation.md.Dw0gpi_-.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_documentation.md.Dw0gpi_-.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as i}from"./chunks/framework.B4OOrI6A.js";const g=JSON.parse('{"title":"Phyre Panel Terminal Commands","description":"","frontmatter":{},"headers":[],"relativePath":"commands/documentation.md","filePath":"commands/documentation.md"}'),l={name:"commands/documentation.md"},n=i("",61),p=[n];function t(o,r,c,h,d,u){return s(),e("div",null,p)}const y=a(l,[["render",t]]);export{g as __pageData,y as default};
|
1
docs/.vitepress/dist/assets/commands_index.md.Diz8HzZM.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_index.md.Diz8HzZM.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as n,a4 as t}from"./chunks/framework.B4OOrI6A.js";const f=JSON.parse('{"title":"Phyre Panel Terminal Commands Index","description":"","frontmatter":{},"headers":[],"relativePath":"commands/index.md","filePath":"commands/index.md"}'),m={name:"commands/index.md"},i=t('<h1 id="phyre-panel-terminal-commands-index" tabindex="-1">Phyre Panel Terminal Commands Index <a class="header-anchor" href="#phyre-panel-terminal-commands-index" aria-label="Permalink to "Phyre Panel Terminal Commands Index""></a></h1><h2 id="available-categories" tabindex="-1">Available Categories <a class="header-anchor" href="#available-categories" aria-label="Permalink to "Available Categories""></a></h2><ul><li><a href="./system-commands.html">System Commands</a></li><li><a href="./installation-commands.html">Installation Commands</a></li><li><a href="./ssl-domain-management.html">SSL & Domain Management</a></li><li><a href="./backup-management.html">Backup Management</a></li><li><a href="./user-management.html">User Management</a></li><li><a href="./system-configuration.html">System Configuration</a></li><li><a href="./system-update.html">System Update</a></li></ul>',3),l=[i];function s(o,r,d,c,h,_){return n(),e("div",null,l)}const u=a(m,[["render",s]]);export{f as __pageData,u as default};
|
1
docs/.vitepress/dist/assets/commands_index.md.Diz8HzZM.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_index.md.Diz8HzZM.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as n,a4 as t}from"./chunks/framework.B4OOrI6A.js";const f=JSON.parse('{"title":"Phyre Panel Terminal Commands Index","description":"","frontmatter":{},"headers":[],"relativePath":"commands/index.md","filePath":"commands/index.md"}'),m={name:"commands/index.md"},i=t("",3),l=[i];function s(o,r,d,c,h,_){return n(),e("div",null,l)}const u=a(m,[["render",s]]);export{f as __pageData,u as default};
|
1
docs/.vitepress/dist/assets/commands_installation-commands.md.DHw08i9U.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_installation-commands.md.DHw08i9U.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as l,a4 as s}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"Installation Commands","description":"","frontmatter":{},"headers":[],"relativePath":"commands/installation-commands.md","filePath":"commands/installation-commands.md"}'),t={name:"commands/installation-commands.md"},n=s('<h1 id="installation-commands" tabindex="-1">Installation Commands <a class="header-anchor" href="#installation-commands" aria-label="Permalink to "Installation Commands""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-install-apache" tabindex="-1"><code>phyre:install-apache</code> <a class="header-anchor" href="#phyre-install-apache" aria-label="Permalink to "`phyre:install-apache`""></a></h3><ul><li>Description: Installs Apache web server with latest PHP version</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:install-apache</span></span></code></pre></div><h3 id="phyre-install-module-module" tabindex="-1"><code>phyre:install-module {module}</code> <a class="header-anchor" href="#phyre-install-module-module" aria-label="Permalink to "`phyre:install-module {module}`""></a></h3><ul><li>Description: Installs a specific Phyre module</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:install-module module_name</span></span></code></pre></div>',8),i=[n];function o(d,c,r,h,p,m){return l(),e("div",null,i)}const b=a(t,[["render",o]]);export{_ as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/commands_installation-commands.md.DHw08i9U.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_installation-commands.md.DHw08i9U.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as l,a4 as s}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"Installation Commands","description":"","frontmatter":{},"headers":[],"relativePath":"commands/installation-commands.md","filePath":"commands/installation-commands.md"}'),t={name:"commands/installation-commands.md"},n=s("",8),i=[n];function o(d,c,r,h,p,m){return l(),e("div",null,i)}const b=a(t,[["render",o]]);export{_ as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/commands_ssl-domain-management.md.CEajfw44.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_ssl-domain-management.md.CEajfw44.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.B4OOrI6A.js";const g=JSON.parse('{"title":"SSL & Domain Management","description":"","frontmatter":{},"headers":[],"relativePath":"commands/ssl-domain-management.md","filePath":"commands/ssl-domain-management.md"}'),i={name:"commands/ssl-domain-management.md"},n=t('<h1 id="ssl-domain-management" tabindex="-1">SSL & Domain Management <a class="header-anchor" href="#ssl-domain-management" aria-label="Permalink to "SSL & Domain Management""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-setup-master-domain-ssl" tabindex="-1"><code>phyre:setup-master-domain-ssl</code> <a class="header-anchor" href="#phyre-setup-master-domain-ssl" aria-label="Permalink to "`phyre:setup-master-domain-ssl`""></a></h3><ul><li>Description: Sets up SSL certificate for the master domain</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:setup-master-domain-ssl</span></span></code></pre></div><h3 id="phyre-apache-ping-websites-with-curl" tabindex="-1"><code>phyre:apache-ping-websites-with-curl</code> <a class="header-anchor" href="#phyre-apache-ping-websites-with-curl" aria-label="Permalink to "`phyre:apache-ping-websites-with-curl`""></a></h3><ul><li>Description: Tests HTTP response for all websites</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:apache-ping-websites-with-curl</span></span></code></pre></div>',8),l=[n];function o(r,p,c,m,h,d){return s(),e("div",null,l)}const b=a(i,[["render",o]]);export{g as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/commands_ssl-domain-management.md.CEajfw44.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_ssl-domain-management.md.CEajfw44.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.B4OOrI6A.js";const g=JSON.parse('{"title":"SSL & Domain Management","description":"","frontmatter":{},"headers":[],"relativePath":"commands/ssl-domain-management.md","filePath":"commands/ssl-domain-management.md"}'),i={name:"commands/ssl-domain-management.md"},n=t("",8),l=[n];function o(r,p,c,m,h,d){return s(),e("div",null,l)}const b=a(i,[["render",o]]);export{g as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/commands_system-commands.md.Dg-cm8pw.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_system-commands.md.Dg-cm8pw.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as r}from"./chunks/framework.B4OOrI6A.js";const y=JSON.parse('{"title":"System Commands","description":"","frontmatter":{},"headers":[],"relativePath":"commands/system-commands.md","filePath":"commands/system-commands.md"}'),i={name:"commands/system-commands.md"},t=r('<h1 id="system-commands" tabindex="-1">System Commands <a class="header-anchor" href="#system-commands" aria-label="Permalink to "System Commands""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-health-check" tabindex="-1"><code>phyre:health-check</code> <a class="header-anchor" href="#phyre-health-check" aria-label="Permalink to "`phyre:health-check`""></a></h3><ul><li>Description: Checks system health including supervisor and Apache2 status</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:health-check</span></span></code></pre></div><h3 id="phyre-run-repair" tabindex="-1"><code>phyre:run-repair</code> <a class="header-anchor" href="#phyre-run-repair" aria-label="Permalink to "`phyre:run-repair`""></a></h3><ul><li>Description: Performs system repairs including database users, phpMyAdmin, and Apache configurations</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:run-repair</span></span></code></pre></div><h3 id="phyre-run-domain-repair" tabindex="-1"><code>phyre:run-domain-repair</code> <a class="header-anchor" href="#phyre-run-domain-repair" aria-label="Permalink to "`phyre:run-domain-repair`""></a></h3><ul><li>Description: Repairs domain configurations</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:run-domain-repair</span></span></code></pre></div>',11),n=[t];function o(l,h,p,c,d,m){return s(),e("div",null,n)}const b=a(i,[["render",o]]);export{y as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/commands_system-commands.md.Dg-cm8pw.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_system-commands.md.Dg-cm8pw.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as r}from"./chunks/framework.B4OOrI6A.js";const y=JSON.parse('{"title":"System Commands","description":"","frontmatter":{},"headers":[],"relativePath":"commands/system-commands.md","filePath":"commands/system-commands.md"}'),i={name:"commands/system-commands.md"},t=r("",11),n=[t];function o(l,h,p,c,d,m){return s(),e("div",null,n)}const b=a(i,[["render",o]]);export{y as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/commands_system-configuration.md.BIA3ukg0.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_system-configuration.md.BIA3ukg0.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as e,c as a,o as t,a4 as i}from"./chunks/framework.B4OOrI6A.js";const y=JSON.parse('{"title":"System Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"commands/system-configuration.md","filePath":"commands/system-configuration.md"}'),s={name:"commands/system-configuration.md"},n=i('<h1 id="system-configuration" tabindex="-1">System Configuration <a class="header-anchor" href="#system-configuration" aria-label="Permalink to "System Configuration""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-key-generate" tabindex="-1"><code>phyre:key-generate</code> <a class="header-anchor" href="#phyre-key-generate" aria-label="Permalink to "`phyre:key-generate`""></a></h3><ul><li>Description: Generates application key in phyre-config.ini</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:key-generate</span></span></code></pre></div><h3 id="phyre-set-ini-settings-key-value" tabindex="-1"><code>phyre:set-ini-settings {key} {value}</code> <a class="header-anchor" href="#phyre-set-ini-settings-key-value" aria-label="Permalink to "`phyre:set-ini-settings {key} {value}`""></a></h3><ul><li>Description: Sets configuration values in phyre-config.ini</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:set-ini-settings key value</span></span></code></pre></div>',8),o=[n];function r(l,c,p,h,d,u){return t(),a("div",null,o)}const g=e(s,[["render",r]]);export{y as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/commands_system-configuration.md.BIA3ukg0.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_system-configuration.md.BIA3ukg0.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as e,c as a,o as t,a4 as i}from"./chunks/framework.B4OOrI6A.js";const y=JSON.parse('{"title":"System Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"commands/system-configuration.md","filePath":"commands/system-configuration.md"}'),s={name:"commands/system-configuration.md"},n=i("",8),o=[n];function r(l,c,p,h,d,u){return t(),a("div",null,o)}const g=e(s,[["render",r]]);export{y as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/commands_system-update.md.gmmoVXy_.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_system-update.md.gmmoVXy_.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as t,a4 as s}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"System Update","description":"","frontmatter":{},"headers":[],"relativePath":"commands/system-update.md","filePath":"commands/system-update.md"}'),o={name:"commands/system-update.md"},d=s('<h1 id="system-update" tabindex="-1">System Update <a class="header-anchor" href="#system-update" aria-label="Permalink to "System Update""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-update" tabindex="-1"><code>phyre:update</code> <a class="header-anchor" href="#phyre-update" aria-label="Permalink to "`phyre:update`""></a></h3><ul><li>Description: Updates Phyre to the latest version</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:update</span></span></code></pre></div>',5),i=[d];function p(r,l,n,c,h,m){return t(),e("div",null,i)}const y=a(o,[["render",p]]);export{_ as __pageData,y as default};
|
1
docs/.vitepress/dist/assets/commands_system-update.md.gmmoVXy_.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_system-update.md.gmmoVXy_.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as t,a4 as s}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"System Update","description":"","frontmatter":{},"headers":[],"relativePath":"commands/system-update.md","filePath":"commands/system-update.md"}'),o={name:"commands/system-update.md"},d=s("",5),i=[d];function p(r,l,n,c,h,m){return t(),e("div",null,i)}const y=a(o,[["render",p]]);export{_ as __pageData,y as default};
|
1
docs/.vitepress/dist/assets/commands_user-management.md.CEhUoMl7.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_user-management.md.CEhUoMl7.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"User Management","description":"","frontmatter":{},"headers":[],"relativePath":"commands/user-management.md","filePath":"commands/user-management.md"}'),n={name:"commands/user-management.md"},r=t('<h1 id="user-management" tabindex="-1">User Management <a class="header-anchor" href="#user-management" aria-label="Permalink to "User Management""></a></h1><h2 id="available-commands" tabindex="-1">Available Commands <a class="header-anchor" href="#available-commands" aria-label="Permalink to "Available Commands""></a></h2><h3 id="phyre-create-admin-account" tabindex="-1"><code>phyre:create-admin-account</code> <a class="header-anchor" href="#phyre-create-admin-account" aria-label="Permalink to "`phyre:create-admin-account`""></a></h3><ul><li>Description: Creates a new admin account</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:create-admin-account</span></span></code></pre></div><h3 id="phyre-reset-admin-account-password" tabindex="-1"><code>phyre:reset-admin-account-password</code> <a class="header-anchor" href="#phyre-reset-admin-account-password" aria-label="Permalink to "`phyre:reset-admin-account-password`""></a></h3><ul><li>Description: Resets password for an existing admin account</li><li>Usage:</li></ul><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>phyre-php /usr/local/phyre/web/artisan phyre:reset-admin-account-password</span></span></code></pre></div>',8),o=[r];function c(i,d,l,p,m,h){return s(),e("div",null,o)}const g=a(n,[["render",c]]);export{_ as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/commands_user-management.md.CEhUoMl7.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/commands_user-management.md.CEhUoMl7.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as e,o as s,a4 as t}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"User Management","description":"","frontmatter":{},"headers":[],"relativePath":"commands/user-management.md","filePath":"commands/user-management.md"}'),n={name:"commands/user-management.md"},r=t("",8),o=[r];function c(i,d,l,p,m,h){return s(),e("div",null,o)}const g=a(n,[["render",c]]);export{_ as __pageData,g as default};
|
|
@ -1 +0,0 @@
|
|||
import{_ as a,c as t,o as e,a4 as s}from"./chunks/framework.B4OOrI6A.js";const u=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"install.md","filePath":"install.md"}'),n={name:"install.md"},l=s('<h1 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h1><p>To install PhyrePanel, you need to run this commands:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/install.sh && chmod +x install.sh && ./install.sh</span></span></code></pre></div><p>The admin panel can be opened on port: yourserver.com:8443</p>',4),o=[l];function i(p,r,c,d,h,_){return e(),t("div",null,o)}const P=a(n,[["render",i]]);export{u as __pageData,P as default};
|
|
@ -1 +0,0 @@
|
|||
import{_ as a,c as t,o as e,a4 as s}from"./chunks/framework.B4OOrI6A.js";const u=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"install.md","filePath":"install.md"}'),n={name:"install.md"},l=s("",4),o=[l];function i(p,r,c,d,h,_){return e(),t("div",null,o)}const P=a(n,[["render",i]]);export{u as __pageData,P as default};
|
1
docs/.vitepress/dist/assets/install.md.DhDEAvmM.js
vendored
Normal file
1
docs/.vitepress/dist/assets/install.md.DhDEAvmM.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,o as e,a4 as s}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"install.md","filePath":"install.md"}'),n={name:"install.md"},i=s('<h1 id="installation" tabindex="-1">Installation <a class="header-anchor" href="#installation" aria-label="Permalink to "Installation""></a></h1><p>To install PhyrePanel, you need to run this commands:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/install.sh && chmod +x install.sh && ./install.sh</span></span></code></pre></div><p>The admin panel can be opened on port: yourserver.com:8443</p><h1 id="updating" tabindex="-1">Updating <a class="header-anchor" href="#updating" aria-label="Permalink to "Updating""></a></h1><p>To update PhyrePanel to the latest version, run this command:</p><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark vp-code"><code><span class="line"><span>rm -rf update.sh && wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/web/update.sh && chmod +x update.sh && ./update.sh</span></span></code></pre></div>',7),l=[i];function p(o,r,h,c,d,m){return e(),t("div",null,l)}const g=a(n,[["render",p]]);export{_ as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/install.md.DhDEAvmM.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/install.md.DhDEAvmM.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as a,c as t,o as e,a4 as s}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"Installation","description":"","frontmatter":{},"headers":[],"relativePath":"install.md","filePath":"install.md"}'),n={name:"install.md"},i=s("",7),l=[i];function p(o,r,h,c,d,m){return e(),t("div",null,l)}const g=a(n,[["render",p]]);export{_ as __pageData,g as default};
|
|
@ -1 +0,0 @@
|
|||
import{_ as e,c as t,o as a,a4 as r}from"./chunks/framework.B4OOrI6A.js";const f=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/features.md","filePath":"introduction/features.md"}'),o={name:"introduction/features.md"},s=r('<h1 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to "Features""></a></h1><p>PHYRE PANEL supports a variety of server application types, including:</p><ul><li><strong>Apache + PHP:</strong> Versions 7.4, 8.0, 8.1, 8.3, and 8.4</li><li><strong>Apache + NodeJS</strong></li><li><strong>Apache + Python</strong></li><li><strong>Apache + Ruby</strong></li><li><strong>Apache + Docker (Via Proxy Reverse)</strong></li></ul>',3),n=[s];function i(c,l,_,u,p,d){return a(),t("div",null,n)}const g=e(o,[["render",i]]);export{f as __pageData,g as default};
|
|
@ -1 +0,0 @@
|
|||
import{_ as e,c as t,o as a,a4 as r}from"./chunks/framework.B4OOrI6A.js";const f=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/features.md","filePath":"introduction/features.md"}'),o={name:"introduction/features.md"},s=r("",3),n=[s];function i(c,l,_,u,p,d){return a(),t("div",null,n)}const g=e(o,[["render",i]]);export{f as __pageData,g as default};
|
1
docs/.vitepress/dist/assets/introduction_features.md.CwA180ca.js
vendored
Normal file
1
docs/.vitepress/dist/assets/introduction_features.md.CwA180ca.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as e,c as a,o as i,a4 as t}from"./chunks/framework.B4OOrI6A.js";const g=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/features.md","filePath":"introduction/features.md"}'),r={name:"introduction/features.md"},l=t('<h1 id="features" tabindex="-1">Features <a class="header-anchor" href="#features" aria-label="Permalink to "Features""></a></h1><p>PHYRE PANEL supports a variety of server application types, including:</p><ul><li><strong>Apache + PHP:</strong> Versions 7.4, 8.0, 8.1, 8.3, and 8.4</li><li><strong>Apache + NodeJS:</strong> Version 14.x, 16.x, 20.x</li><li><strong>Apache + Python:</strong> Version 3.10</li><li><strong>Apache + Ruby:</strong> Version 3.4</li><li><strong>Apache + Docker:</strong> (Via Proxy Reverse)</li></ul><h2 id="hosting-management" tabindex="-1">Hosting Management <a class="header-anchor" href="#hosting-management" aria-label="Permalink to "Hosting Management""></a></h2><ul><li>Multi-server clustering support</li><li>Customer account management</li><li>Flexible hosting plans configuration</li><li>Domain management with multiple server types</li><li>Automated SSL certificate management</li><li>Custom PHP, Node.js, Python and Ruby versions per domain</li><li>Git repository integration</li><li>Docker container support</li></ul><h2 id="database-features" tabindex="-1">Database Features <a class="header-anchor" href="#database-features" aria-label="Permalink to "Database Features""></a></h2><ul><li>MySQL/MariaDB support</li><li>PostgreSQL support</li><li>MongoDB support</li><li>SQLite support</li><li>Remote database server management</li><li>Database user management</li></ul><h2 id="backup-security" tabindex="-1">Backup & Security <a class="header-anchor" href="#backup-security" aria-label="Permalink to "Backup & Security""></a></h2><ul><li>Automated backup system</li><li>Multiple backup types (full, selective)</li><li>Custom backup schedules (daily, weekly, monthly)</li><li>Configurable backup retention</li><li>Remote backup server support</li><li>IP whitelisting</li><li>API key management</li></ul><h2 id="system-administration" tabindex="-1">System Administration <a class="header-anchor" href="#system-administration" aria-label="Permalink to "System Administration""></a></h2><ul><li>Cron job management</li><li>Server resource monitoring</li><li>Multi-user administration</li><li>Server clustering capabilities</li><li>Remote server management</li><li>System updates management</li></ul><h2 id="additional-features" tabindex="-1">Additional Features <a class="header-anchor" href="#additional-features" aria-label="Permalink to "Additional Features""></a></h2><ul><li>Custom environment variables support</li><li>Multiple PHP versions per domain</li><li>Node.js package manager support (npm, yarn)</li><li>Development/Production environment switching</li><li>Custom domain configurations</li><li>Server health monitoring</li></ul>',13),n=[l];function o(s,u,m,c,p,d){return i(),a("div",null,n)}const b=e(r,[["render",o]]);export{g as __pageData,b as default};
|
1
docs/.vitepress/dist/assets/introduction_features.md.CwA180ca.lean.js
vendored
Normal file
1
docs/.vitepress/dist/assets/introduction_features.md.CwA180ca.lean.js
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
import{_ as e,c as a,o as i,a4 as t}from"./chunks/framework.B4OOrI6A.js";const g=JSON.parse('{"title":"Features","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/features.md","filePath":"introduction/features.md"}'),r={name:"introduction/features.md"},l=t("",13),n=[l];function o(s,u,m,c,p,d){return i(),a("div",null,n)}const b=e(r,[["render",o]]);export{g as __pageData,b as default};
|
|
@ -1 +1 @@
|
|||
import{_ as t,c as e,o,a4 as r}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"Requirements","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/requirements.md","filePath":"introduction/requirements.md"}'),s={name:"introduction/requirements.md"},n=r('<h1 id="requirements" tabindex="-1">Requirements <a class="header-anchor" href="#requirements" aria-label="Permalink to "Requirements""></a></h1><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Phyre must be installed on top of a fresh operating system installation to ensure proper functionality. If on a VPS/KVM, and there is already an admin account, either delete that default admin ID, or use <code>--force</code> to continue with the installation. See custom installation below for further details.</p></div><table><thead><tr><th></th><th>Minimum</th><th>Recommended</th></tr></thead><tbody><tr><td><strong>CPU</strong></td><td>1 core, 64-bit</td><td>4 cores</td></tr><tr><td><strong>Memory</strong></td><td>1 GB (without Docker)</td><td>4 GB</td></tr><tr><td><strong>Disk</strong></td><td>10 GB HDD</td><td>40 GB SSD</td></tr><tr><td><strong>Operating System</strong></td><td>Ubuntu 20.04, 22.04 LTS</td><td>Latest Ubuntu LTS</td></tr></tbody></table><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Phyre only runs on AMD64 / x86_64 and ARM64 / aarch64 processors. It also requires a 64bit operating system! We currently do not support i386 or ARM7-based processors.</p></div><h3 id="supported-operating-systems" tabindex="-1">Supported operating systems <a class="header-anchor" href="#supported-operating-systems" aria-label="Permalink to "Supported operating systems""></a></h3><ul><li>Ubuntu 20.04 or 22.04</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Phyre does not support non-LTS Operating systems. If you install it on, for example, Ubuntu 21.10, you will not receive support from us.</p></div>',7),a=[n];function i(d,c,u,l,p,m){return o(),e("div",null,a)}const b=t(s,[["render",i]]);export{_ as __pageData,b as default};
|
||||
import{_ as t,c as e,o,a4 as r}from"./chunks/framework.B4OOrI6A.js";const _=JSON.parse('{"title":"Requirements","description":"","frontmatter":{},"headers":[],"relativePath":"introduction/requirements.md","filePath":"introduction/requirements.md"}'),s={name:"introduction/requirements.md"},n=r('<h1 id="requirements" tabindex="-1">Requirements <a class="header-anchor" href="#requirements" aria-label="Permalink to "Requirements""></a></h1><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Phyre must be installed on top of a fresh operating system installation to ensure proper functionality. If on a VPS/KVM, and there is already an admin account, either delete that default admin ID, or use <code>--force</code> to continue with the installation. See custom installation below for further details.</p></div><table><thead><tr><th></th><th>Minimum</th><th>Recommended</th></tr></thead><tbody><tr><td><strong>CPU</strong></td><td>1 core, 64-bit</td><td>4 cores</td></tr><tr><td><strong>Memory</strong></td><td>1 GB (without Docker)</td><td>4 GB</td></tr><tr><td><strong>Disk</strong></td><td>10 GB HDD</td><td>40 GB SSD</td></tr><tr><td><strong>Operating System</strong></td><td>Ubuntu 20.04, 22.04 LTS</td><td>Latest Ubuntu LTS</td></tr></tbody></table><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Phyre only runs on AMD64 / x86_64 and ARM64 / aarch64 processors. It also requires a 64bit operating system! We currently do not support i386 or ARM7-based processors.</p></div><h3 id="supported-operating-systems" tabindex="-1">Supported operating systems <a class="header-anchor" href="#supported-operating-systems" aria-label="Permalink to "Supported operating systems""></a></h3><ul><li>Ubuntu 20.04, 22.04 or 24.04 LTS</li></ul><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>Phyre does not support non-LTS Operating systems. If you install it on, for example, Ubuntu 21.10, you will not receive support from us.</p></div>',7),a=[n];function i(d,c,u,l,p,m){return o(),e("div",null,a)}const b=t(s,[["render",i]]);export{_ as __pageData,b as default};
|
|
@ -1 +1 @@
|
|||
import{V as s,a as r,b as i}from"./chunks/theme.CL3rQOXI.js";import{_ as n,c as m,l,I as a,w as e,m as t,o as c,a as o}from"./chunks/framework.B4OOrI6A.js";const h=[{avatar:"https://avatars.githubusercontent.com/u/50577633?v=4",name:"Bozhidar Slaveykov 🇧🇬",title:"Developer",org:"CloudVision",orgLink:"https://phyrepanel.com",links:[{icon:"github",link:"https://github.com/bobicloudvision"},{icon:"linkedin",link:"https://www.linkedin.com/in/bozhidar.slaveykov"}]},{avatar:"https://avatars.githubusercontent.com/u/5698247?v=4",name:"Peter Ivanov 🇧🇬",title:"Developer",org:"Microweber",orgLink:"https://microweber.com.com",links:[{icon:"github",link:"https://github.com/peter-mw"}]}],p={class:"VPTeamPage"},T=JSON.parse('{"title":"The Team","description":"","frontmatter":{"layout":"page","sidebar":false,"title":"The Team"},"headers":[],"relativePath":"team.md","filePath":"team.md"}'),d={name:"team.md"},u=Object.assign(d,{setup(b){return(v,_)=>(c(),m("div",null,[l("div",p,[a(t(s),null,{title:e(()=>[o("The Team")]),lead:e(()=>[o(" The team behind PhyrePanel is a small group of passionate developers who are dedicated to making the best open source web control panel for Linux servers. ")]),_:1}),a(t(i),null,{title:e(()=>[o("Team Members")]),members:e(()=>[a(t(r),{members:t(h)},null,8,["members"])]),_:1})])]))}}),f=n(u,[["__scopeId","data-v-50bea38a"]]);export{T as __pageData,f as default};
|
||||
import{V as s,a as r,b as i}from"./chunks/theme.BviEWPeY.js";import{_ as n,c as m,l,I as a,w as e,m as t,o as c,a as o}from"./chunks/framework.B4OOrI6A.js";const h=[{avatar:"https://avatars.githubusercontent.com/u/50577633?v=4",name:"Bozhidar Slaveykov 🇧🇬",title:"Developer",org:"CloudVision",orgLink:"https://phyrepanel.com",links:[{icon:"github",link:"https://github.com/bobicloudvision"},{icon:"linkedin",link:"https://www.linkedin.com/in/bozhidar.slaveykov"}]},{avatar:"https://avatars.githubusercontent.com/u/5698247?v=4",name:"Peter Ivanov 🇧🇬",title:"Developer",org:"Microweber",orgLink:"https://microweber.com.com",links:[{icon:"github",link:"https://github.com/peter-mw"}]}],p={class:"VPTeamPage"},T=JSON.parse('{"title":"The Team","description":"","frontmatter":{"layout":"page","sidebar":false,"title":"The Team"},"headers":[],"relativePath":"team.md","filePath":"team.md"}'),d={name:"team.md"},u=Object.assign(d,{setup(b){return(v,_)=>(c(),m("div",null,[l("div",p,[a(t(s),null,{title:e(()=>[o("The Team")]),lead:e(()=>[o(" The team behind PhyrePanel is a small group of passionate developers who are dedicated to making the best open source web control panel for Linux servers. ")]),_:1}),a(t(i),null,{title:e(()=>[o("Team Members")]),members:e(()=>[a(t(r),{members:t(h)},null,8,["members"])]),_:1})])]))}}),f=n(u,[["__scopeId","data-v-50bea38a"]]);export{T as __pageData,f as default};
|
|
@ -1 +1 @@
|
|||
import{V as s,a as r,b as i}from"./chunks/theme.CL3rQOXI.js";import{_ as n,c as m,l,I as a,w as e,m as t,o as c,a as o}from"./chunks/framework.B4OOrI6A.js";const h=[{avatar:"https://avatars.githubusercontent.com/u/50577633?v=4",name:"Bozhidar Slaveykov 🇧🇬",title:"Developer",org:"CloudVision",orgLink:"https://phyrepanel.com",links:[{icon:"github",link:"https://github.com/bobicloudvision"},{icon:"linkedin",link:"https://www.linkedin.com/in/bozhidar.slaveykov"}]},{avatar:"https://avatars.githubusercontent.com/u/5698247?v=4",name:"Peter Ivanov 🇧🇬",title:"Developer",org:"Microweber",orgLink:"https://microweber.com.com",links:[{icon:"github",link:"https://github.com/peter-mw"}]}],p={class:"VPTeamPage"},T=JSON.parse('{"title":"The Team","description":"","frontmatter":{"layout":"page","sidebar":false,"title":"The Team"},"headers":[],"relativePath":"team.md","filePath":"team.md"}'),d={name:"team.md"},u=Object.assign(d,{setup(b){return(v,_)=>(c(),m("div",null,[l("div",p,[a(t(s),null,{title:e(()=>[o("The Team")]),lead:e(()=>[o(" The team behind PhyrePanel is a small group of passionate developers who are dedicated to making the best open source web control panel for Linux servers. ")]),_:1}),a(t(i),null,{title:e(()=>[o("Team Members")]),members:e(()=>[a(t(r),{members:t(h)},null,8,["members"])]),_:1})])]))}}),f=n(u,[["__scopeId","data-v-50bea38a"]]);export{T as __pageData,f as default};
|
||||
import{V as s,a as r,b as i}from"./chunks/theme.BviEWPeY.js";import{_ as n,c as m,l,I as a,w as e,m as t,o as c,a as o}from"./chunks/framework.B4OOrI6A.js";const h=[{avatar:"https://avatars.githubusercontent.com/u/50577633?v=4",name:"Bozhidar Slaveykov 🇧🇬",title:"Developer",org:"CloudVision",orgLink:"https://phyrepanel.com",links:[{icon:"github",link:"https://github.com/bobicloudvision"},{icon:"linkedin",link:"https://www.linkedin.com/in/bozhidar.slaveykov"}]},{avatar:"https://avatars.githubusercontent.com/u/5698247?v=4",name:"Peter Ivanov 🇧🇬",title:"Developer",org:"Microweber",orgLink:"https://microweber.com.com",links:[{icon:"github",link:"https://github.com/peter-mw"}]}],p={class:"VPTeamPage"},T=JSON.parse('{"title":"The Team","description":"","frontmatter":{"layout":"page","sidebar":false,"title":"The Team"},"headers":[],"relativePath":"team.md","filePath":"team.md"}'),d={name:"team.md"},u=Object.assign(d,{setup(b){return(v,_)=>(c(),m("div",null,[l("div",p,[a(t(s),null,{title:e(()=>[o("The Team")]),lead:e(()=>[o(" The team behind PhyrePanel is a small group of passionate developers who are dedicated to making the best open source web control panel for Linux servers. ")]),_:1}),a(t(i),null,{title:e(()=>[o("Team Members")]),members:e(()=>[a(t(r),{members:t(h)},null,8,["members"])]),_:1})])]))}}),f=n(u,[["__scopeId","data-v-50bea38a"]]);export{T as __pageData,f as default};
|
24
docs/.vitepress/dist/commands/backup-management.html
vendored
Normal file
24
docs/.vitepress/dist/commands/backup-management.html
vendored
Normal file
File diff suppressed because one or more lines are too long
34
docs/.vitepress/dist/commands/documentation.html
vendored
Normal file
34
docs/.vitepress/dist/commands/documentation.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/index.html
vendored
Normal file
24
docs/.vitepress/dist/commands/index.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/installation-commands.html
vendored
Normal file
24
docs/.vitepress/dist/commands/installation-commands.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/ssl-domain-management.html
vendored
Normal file
24
docs/.vitepress/dist/commands/ssl-domain-management.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/system-commands.html
vendored
Normal file
24
docs/.vitepress/dist/commands/system-commands.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/system-configuration.html
vendored
Normal file
24
docs/.vitepress/dist/commands/system-configuration.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/system-update.html
vendored
Normal file
24
docs/.vitepress/dist/commands/system-update.html
vendored
Normal file
File diff suppressed because one or more lines are too long
24
docs/.vitepress/dist/commands/user-management.html
vendored
Normal file
24
docs/.vitepress/dist/commands/user-management.html
vendored
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
docs/.vitepress/dist/hashmap.json
vendored
2
docs/.vitepress/dist/hashmap.json
vendored
|
@ -1 +1 @@
|
|||
{"team.md":"DvWPIsOM","introduction_features.md":"Be9PokAF","integrations_whmcs.md":"hGsS8mql","introduction_getting-started.md":"Bm490ErG","index.md":"DziDWOxR","introduction_requirements.md":"_1S73296","install.md":"CCpuQeK4","contributing_documentation.md":"BmOFsXeC"}
|
||||
{"integrations_whmcs.md":"hGsS8mql","contributing_documentation.md":"BmOFsXeC","commands_ssl-domain-management.md":"CEajfw44","commands_documentation.md":"Dw0gpi_-","commands_index.md":"Diz8HzZM","commands_system-configuration.md":"BIA3ukg0","index.md":"DziDWOxR","install.md":"DhDEAvmM","team.md":"BvKyvWCV","commands_system-update.md":"gmmoVXy_","introduction_requirements.md":"_Qrr0-32","commands_backup-management.md":"y8-vq9Uc","introduction_getting-started.md":"Bm490ErG","commands_installation-commands.md":"DHw08i9U","introduction_features.md":"CwA180ca","commands_user-management.md":"CEhUoMl7","commands_system-commands.md":"Dg-cm8pw"}
|
||||
|
|
8
docs/.vitepress/dist/index.html
vendored
8
docs/.vitepress/dist/index.html
vendored
File diff suppressed because one or more lines are too long
10
docs/.vitepress/dist/install.html
vendored
10
docs/.vitepress/dist/install.html
vendored
File diff suppressed because one or more lines are too long
8
docs/.vitepress/dist/integrations/whmcs.html
vendored
8
docs/.vitepress/dist/integrations/whmcs.html
vendored
File diff suppressed because one or more lines are too long
10
docs/.vitepress/dist/introduction/features.html
vendored
10
docs/.vitepress/dist/introduction/features.html
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
10
docs/.vitepress/dist/team.html
vendored
10
docs/.vitepress/dist/team.html
vendored
File diff suppressed because one or more lines are too long
31
docs/commands/backup-management.md
Normal file
31
docs/commands/backup-management.md
Normal file
|
@ -0,0 +1,31 @@
|
|||
# Backup Management
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:create-daily-full-backup`
|
||||
- Description: Creates a full system backup
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-backup
|
||||
```
|
||||
|
||||
### `phyre:create-daily-full-hosting-subscriptions-backup`
|
||||
- Description: Creates backups for all hosting subscriptions
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-hosting-subscriptions-backup
|
||||
```
|
||||
|
||||
### `phyre:run-backup-checks`
|
||||
- Description: Checks and manages backup status
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-backup-checks
|
||||
```
|
||||
|
||||
### `phyre:run-upload-backups-to-remote-servers`
|
||||
- Description: Uploads backups to configured remote servers
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-upload-backups-to-remote-servers
|
||||
```
|
153
docs/commands/documentation.md
Normal file
153
docs/commands/documentation.md
Normal file
|
@ -0,0 +1,153 @@
|
|||
# Phyre Panel Terminal Commands
|
||||
|
||||
## Available Commands
|
||||
|
||||
### System Commands
|
||||
|
||||
`phyre:health-check`
|
||||
- Description: Checks system health including supervisor and Apache2 status
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:health-check
|
||||
```
|
||||
|
||||
`phyre:run-repair`
|
||||
- Description: Performs system repairs including database users, phpMyAdmin, and Apache configurations
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-repair
|
||||
```
|
||||
|
||||
`phyre:run-domain-repair`
|
||||
- Description: Repairs domain configurations
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-domain-repair
|
||||
```
|
||||
|
||||
### Installation Commands
|
||||
|
||||
`phyre:install-apache`
|
||||
- Description: Installs Apache web server with latest PHP version
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:install-apache
|
||||
```
|
||||
|
||||
`phyre:install-module {module}`
|
||||
- Description: Installs a specific Phyre module
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:install-module module_name
|
||||
```
|
||||
|
||||
### SSL & Domain Management
|
||||
|
||||
`phyre:setup-master-domain-ssl`
|
||||
- Description: Sets up SSL certificate for the master domain
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:setup-master-domain-ssl
|
||||
```
|
||||
|
||||
`phyre:apache-ping-websites-with-curl`
|
||||
- Description: Tests HTTP response for all websites
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:apache-ping-websites-with-curl
|
||||
```
|
||||
|
||||
### Backup Management
|
||||
|
||||
`phyre:create-daily-full-backup`
|
||||
- Description: Creates a full system backup
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-backup
|
||||
```
|
||||
|
||||
`phyre:create-daily-full-hosting-subscriptions-backup`
|
||||
- Description: Creates backups for all hosting subscriptions
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-hosting-subscriptions-backup
|
||||
```
|
||||
|
||||
`phyre:run-backup-checks`
|
||||
- Description: Checks and manages backup status
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-backup-checks
|
||||
```
|
||||
|
||||
`phyre:run-upload-backups-to-remote-servers`
|
||||
- Description: Uploads backups to configured remote servers
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-upload-backups-to-remote-servers
|
||||
```
|
||||
|
||||
### User Management
|
||||
|
||||
`phyre:create-admin-account`
|
||||
- Description: Creates a new admin account
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-admin-account
|
||||
```
|
||||
|
||||
`phyre:reset-admin-account-password`
|
||||
- Description: Resets password for an existing admin account
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:reset-admin-account-password
|
||||
```
|
||||
|
||||
### System Configuration
|
||||
|
||||
`phyre:key-generate`
|
||||
- Description: Generates application key in phyre-config.ini
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:key-generate
|
||||
```
|
||||
|
||||
`phyre:set-ini-settings {key} {value}`
|
||||
- Description: Sets configuration values in phyre-config.ini
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:set-ini-settings key value
|
||||
```
|
||||
|
||||
### System Update
|
||||
|
||||
`phyre:update`
|
||||
- Description: Updates Phyre to the latest version
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:update
|
||||
```
|
||||
|
||||
## Usage Examples
|
||||
|
||||
```bash
|
||||
# Create a new admin account
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-admin-account
|
||||
|
||||
# Check system health
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:health-check
|
||||
|
||||
# Create daily backup
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-daily-full-backup
|
||||
|
||||
# Install a module
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:install-module blog
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- All commands should be run from the project root directory
|
||||
- Some commands may require sudo/root privileges
|
||||
- Backup commands run automatically via cron but can be executed manually
|
||||
- Always ensure proper permissions before running system-level commands
|
||||
|
11
docs/commands/index.md
Normal file
11
docs/commands/index.md
Normal file
|
@ -0,0 +1,11 @@
|
|||
# Phyre Panel Terminal Commands Index
|
||||
|
||||
## Available Categories
|
||||
|
||||
- [System Commands](system-commands.md)
|
||||
- [Installation Commands](installation-commands.md)
|
||||
- [SSL & Domain Management](ssl-domain-management.md)
|
||||
- [Backup Management](backup-management.md)
|
||||
- [User Management](user-management.md)
|
||||
- [System Configuration](system-configuration.md)
|
||||
- [System Update](system-update.md)
|
17
docs/commands/installation-commands.md
Normal file
17
docs/commands/installation-commands.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Installation Commands
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:install-apache`
|
||||
- Description: Installs Apache web server with latest PHP version
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:install-apache
|
||||
```
|
||||
|
||||
### `phyre:install-module {module}`
|
||||
- Description: Installs a specific Phyre module
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:install-module module_name
|
||||
```
|
17
docs/commands/ssl-domain-management.md
Normal file
17
docs/commands/ssl-domain-management.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# SSL & Domain Management
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:setup-master-domain-ssl`
|
||||
- Description: Sets up SSL certificate for the master domain
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:setup-master-domain-ssl
|
||||
```
|
||||
|
||||
### `phyre:apache-ping-websites-with-curl`
|
||||
- Description: Tests HTTP response for all websites
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:apache-ping-websites-with-curl
|
||||
```
|
24
docs/commands/system-commands.md
Normal file
24
docs/commands/system-commands.md
Normal file
|
@ -0,0 +1,24 @@
|
|||
# System Commands
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:health-check`
|
||||
- Description: Checks system health including supervisor and Apache2 status
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:health-check
|
||||
```
|
||||
|
||||
### `phyre:run-repair`
|
||||
- Description: Performs system repairs including database users, phpMyAdmin, and Apache configurations
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-repair
|
||||
```
|
||||
|
||||
### `phyre:run-domain-repair`
|
||||
- Description: Repairs domain configurations
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:run-domain-repair
|
||||
```
|
17
docs/commands/system-configuration.md
Normal file
17
docs/commands/system-configuration.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# System Configuration
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:key-generate`
|
||||
- Description: Generates application key in phyre-config.ini
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:key-generate
|
||||
```
|
||||
|
||||
### `phyre:set-ini-settings {key} {value}`
|
||||
- Description: Sets configuration values in phyre-config.ini
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:set-ini-settings key value
|
||||
```
|
10
docs/commands/system-update.md
Normal file
10
docs/commands/system-update.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
# System Update
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:update`
|
||||
- Description: Updates Phyre to the latest version
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:update
|
||||
```
|
17
docs/commands/user-management.md
Normal file
17
docs/commands/user-management.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# User Management
|
||||
|
||||
## Available Commands
|
||||
|
||||
### `phyre:create-admin-account`
|
||||
- Description: Creates a new admin account
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:create-admin-account
|
||||
```
|
||||
|
||||
### `phyre:reset-admin-account-password`
|
||||
- Description: Resets password for an existing admin account
|
||||
- Usage:
|
||||
```
|
||||
phyre-php /usr/local/phyre/web/artisan phyre:reset-admin-account-password
|
||||
```
|
|
@ -4,3 +4,9 @@ To install PhyrePanel, you need to run this commands:
|
|||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/install.sh && chmod +x install.sh && ./install.sh
|
||||
```
|
||||
The admin panel can be opened on port: yourserver.com:8443
|
||||
|
||||
# Updating
|
||||
To update PhyrePanel to the latest version, run this command:
|
||||
```
|
||||
rm -rf update.sh && wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/web/update.sh && chmod +x update.sh && ./update.sh
|
||||
```
|
||||
|
|
|
@ -2,7 +2,50 @@
|
|||
|
||||
PHYRE PANEL supports a variety of server application types, including:
|
||||
- **Apache + PHP:** Versions 7.4, 8.0, 8.1, 8.3, and 8.4
|
||||
- **Apache + NodeJS**
|
||||
- **Apache + Python**
|
||||
- **Apache + Ruby**
|
||||
- **Apache + Docker (Via Proxy Reverse)**
|
||||
- **Apache + NodeJS:** Version 14.x, 16.x, 20.x
|
||||
- **Apache + Python:** Version 3.10
|
||||
- **Apache + Ruby:** Version 3.4
|
||||
- **Apache + Docker:** (Via Proxy Reverse)
|
||||
|
||||
## Hosting Management
|
||||
- Multi-server clustering support
|
||||
- Customer account management
|
||||
- Flexible hosting plans configuration
|
||||
- Domain management with multiple server types
|
||||
- Automated SSL certificate management
|
||||
- Custom PHP, Node.js, Python and Ruby versions per domain
|
||||
- Git repository integration
|
||||
- Docker container support
|
||||
|
||||
## Database Features
|
||||
- MySQL/MariaDB support
|
||||
- PostgreSQL support
|
||||
- MongoDB support
|
||||
- SQLite support
|
||||
- Remote database server management
|
||||
- Database user management
|
||||
|
||||
## Backup & Security
|
||||
- Automated backup system
|
||||
- Multiple backup types (full, selective)
|
||||
- Custom backup schedules (daily, weekly, monthly)
|
||||
- Configurable backup retention
|
||||
- Remote backup server support
|
||||
- IP whitelisting
|
||||
- API key management
|
||||
|
||||
## System Administration
|
||||
- Cron job management
|
||||
- Server resource monitoring
|
||||
- Multi-user administration
|
||||
- Server clustering capabilities
|
||||
- Remote server management
|
||||
- System updates management
|
||||
|
||||
## Additional Features
|
||||
- Custom environment variables support
|
||||
- Multiple PHP versions per domain
|
||||
- Node.js package manager support (npm, yarn)
|
||||
- Development/Production environment switching
|
||||
- Custom domain configurations
|
||||
- Server health monitoring
|
||||
|
|
|
@ -20,7 +20,7 @@ We currently do not support i386 or ARM7-based processors.
|
|||
|
||||
### Supported operating systems
|
||||
|
||||
- Ubuntu 20.04 or 22.04
|
||||
- Ubuntu 20.04, 22.04 or 24.04 LTS
|
||||
|
||||
::: warning
|
||||
Phyre does not support non-LTS Operating systems. If you install it on, for example, Ubuntu 21.10, you will not receive support from us.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"version": "0.0.9",
|
||||
"version": "0.1.1",
|
||||
"scripts": {
|
||||
"docs:dev": "vitepress dev",
|
||||
"docs:build": "vitepress build",
|
||||
|
|
|
@ -28,3 +28,20 @@ echo "$INSTALL_BASE" >> ubuntu-22.04/install.sh
|
|||
echo "$INSTALL_LOG" >> ubuntu-22.04/install.sh
|
||||
echo "$DOWNLOAD_WEB" >> ubuntu-22.04/install.sh
|
||||
echo "$INSTALL_WEB" >> ubuntu-22.04/install.sh
|
||||
|
||||
|
||||
|
||||
# Compile ubuntu-22.04 installers
|
||||
|
||||
# get content from file
|
||||
INSTALL_BASE=$(cat ubuntu-24.04/install-partial/install_base.sh)
|
||||
INSTALL_LOG=$(cat ubuntu-20.04/install-partial/install_log.sh)
|
||||
DOWNLOAD_WEB=$(cat ubuntu-20.04/install-partial/download_web.sh)
|
||||
INSTALL_WEB=$(cat ubuntu-20.04/install-partial/install_web.sh)
|
||||
|
||||
# create installer
|
||||
rm -rf ubuntu-24.04/install.sh
|
||||
echo "$INSTALL_BASE" >> ubuntu-24.04/install.sh
|
||||
echo "$INSTALL_LOG" >> ubuntu-24.04/install.sh
|
||||
echo "$DOWNLOAD_WEB" >> ubuntu-24.04/install.sh
|
||||
echo "$INSTALL_WEB" >> ubuntu-24.04/install.sh
|
||||
|
|
|
@ -11,12 +11,12 @@ cd /usr/local/phyre/web
|
|||
|
||||
|
||||
mysql -uroot -proot <<MYSQL_SCRIPT
|
||||
SET GLOBAL validate_password.policy = LOW;
|
||||
SET GLOBAL validate_password.length = 6;
|
||||
SET GLOBAL validate_password.mixed_case_count = 0;
|
||||
SET GLOBAL validate_password.number_count = 0;
|
||||
SET GLOBAL validate_password.special_char_count = 0;
|
||||
FLUSH PRIVILEGES;
|
||||
SET GLOBAL validate_password.policy = LOW;
|
||||
SET GLOBAL validate_password.length = 6;
|
||||
SET GLOBAL validate_password.mixed_case_count = 0;
|
||||
SET GLOBAL validate_password.number_count = 0;
|
||||
SET GLOBAL validate_password.special_char_count = 0;
|
||||
FLUSH PRIVILEGES;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
# Create MySQL user
|
||||
|
@ -80,4 +80,12 @@ service phyre start
|
|||
CURRENT_IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
echo "PhyrePanel downloaded successfully."
|
||||
echo "Please visit https://$CURRENT_IP:8443 to continue installation of the panel."
|
||||
|
||||
# Parse argument --dont-ask
|
||||
if [ "$1" == "--dont-ask" ]; then
|
||||
echo "PhyrePanel is now available at https://$CURRENT_IP:8443"
|
||||
exit 0
|
||||
else
|
||||
phyre-php artisan phyre:install-apache
|
||||
phyre-php artisan phyre:setup-master-domain-ssl
|
||||
fi
|
||||
|
|
|
@ -1,172 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
INSTALL_DIR="/phyre/install"
|
||||
|
||||
apt-get update && apt-get install ca-certificates
|
||||
|
||||
mkdir -p $INSTALL_DIR
|
||||
|
||||
cd $INSTALL_DIR
|
||||
|
||||
DEPENDENCIES_LIST=(
|
||||
"openssl"
|
||||
"jq"
|
||||
"curl"
|
||||
"wget"
|
||||
"unzip"
|
||||
"zip"
|
||||
"tar"
|
||||
"mysql-common"
|
||||
"mysql-server"
|
||||
"mysql-client"
|
||||
"lsb-release"
|
||||
"gnupg2"
|
||||
"ca-certificates"
|
||||
"apt-transport-https"
|
||||
"software-properties-common"
|
||||
"supervisor"
|
||||
"libonig-dev"
|
||||
"libzip-dev"
|
||||
"libcurl4-openssl-dev"
|
||||
"libsodium23"
|
||||
"libpq5"
|
||||
"apache2"
|
||||
"libapache2-mod-ruid2"
|
||||
"libapache2-mod-php"
|
||||
"libssl-dev"
|
||||
"zlib1g-dev"
|
||||
)
|
||||
# Check if the dependencies are installed
|
||||
for DEPENDENCY in "${DEPENDENCIES_LIST[@]}"; do
|
||||
apt install -yq $DEPENDENCY
|
||||
done
|
||||
|
||||
# Start MySQL
|
||||
service mysql start
|
||||
|
||||
mkdir -p /usr/local/phyre/ssl
|
||||
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/server/ssl/phyre.crt -O /usr/local/phyre/ssl/phyre.crt
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/server/ssl/phyre.key -O /usr/local/phyre/ssl/phyre.key
|
||||
|
||||
sudo chmod 644 /usr/local/phyre/ssl/phyre.crt
|
||||
sudo chmod 600 /usr/local/phyre/ssl/phyre.key
|
||||
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/ubuntu-20.04/greeting.sh -O /etc/profile.d/phyre-greeting.sh
|
||||
|
||||
# Install PHYRE PHP
|
||||
wget https://github.com/PhyreApps/PhyrePanelPHP/raw/main/compilators/debian/php/dist/phyre-php-8.2.0-ubuntu-20.04.deb
|
||||
dpkg -i phyre-php-8.2.0-ubuntu-20.04.deb
|
||||
|
||||
# Install PHYRE NGINX
|
||||
wget https://github.com/PhyreApps/PhyrePanelNGINX/raw/main/compilators/debian/nginx/dist/phyre-nginx-1.24.0-ubuntu-20.04.deb
|
||||
dpkg -i phyre-nginx-1.24.0-ubuntu-20.04.deb
|
||||
|
||||
PHYRE_PHP=/usr/local/phyre/php/bin/php
|
||||
|
||||
ln -s $PHYRE_PHP /usr/bin/phyre-php
|
||||
#!/bin/bash
|
||||
|
||||
HOSTNAME=$(hostname)
|
||||
IP_ADDRESS=$(hostname -I | cut -d " " -f 1)
|
||||
|
||||
DISTRO_VERSION=$(cat /etc/os-release | grep -w "VERSION_ID" | cut -d "=" -f 2)
|
||||
DISTRO_VERSION=${DISTRO_VERSION//\"/} # Remove quotes from version string
|
||||
|
||||
DISTRO_NAME=$(cat /etc/os-release | grep -w "NAME" | cut -d "=" -f 2)
|
||||
DISTRO_NAME=${DISTRO_NAME//\"/} # Remove quotes from name string
|
||||
|
||||
LOG_JSON='{"os": "'$DISTRO_NAME-$DISTRO_VERSION'", "host_name": "'$HOSTNAME'", "ip": "'$IP_ADDRESS'"}'
|
||||
|
||||
curl -s https://phyrepanel.com/api/phyre-installation-log -X POST -H "Content-Type: application/json" -d "$LOG_JSON"
|
||||
#!/bin/bash
|
||||
|
||||
wget https://github.com/PhyreApps/PhyrePanelWebCompiledVersions/raw/main/phyre-web-panel.zip
|
||||
unzip -qq -o phyre-web-panel.zip -d /usr/local/phyre/web
|
||||
rm -rf phyre-web-panel.zip
|
||||
|
||||
chmod 711 /home
|
||||
chmod -R 750 /usr/local/phyre
|
||||
#!/bin/bash
|
||||
|
||||
# Check dir exists
|
||||
if [ ! -d "/usr/local/phyre/web" ]; then
|
||||
echo "PhyrePanel directory not found."
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Go to web directory
|
||||
cd /usr/local/phyre/web
|
||||
|
||||
|
||||
mysql -uroot -proot <<MYSQL_SCRIPT
|
||||
SET GLOBAL validate_password.policy = LOW;
|
||||
SET GLOBAL validate_password.length = 6;
|
||||
SET GLOBAL validate_password.mixed_case_count = 0;
|
||||
SET GLOBAL validate_password.number_count = 0;
|
||||
SET GLOBAL validate_password.special_char_count = 0;
|
||||
FLUSH PRIVILEGES;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
# Create MySQL user
|
||||
MYSQL_PHYRE_ROOT_USERNAME="phyre"
|
||||
MYSQL_PHYRE_ROOT_PASSWORD="$(tr -dc a-za-z0-9 </dev/urandom | head -c 32; echo)"
|
||||
|
||||
mysql -uroot -proot <<MYSQL_SCRIPT
|
||||
CREATE USER '$MYSQL_PHYRE_ROOT_USERNAME'@'%' IDENTIFIED BY '$MYSQL_PHYRE_ROOT_PASSWORD';
|
||||
GRANT ALL PRIVILEGES ON *.* TO '$MYSQL_PHYRE_ROOT_USERNAME'@'%' WITH GRANT OPTION;
|
||||
FLUSH PRIVILEGES;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
|
||||
# Create database
|
||||
PHYRE_PANEL_DB_PASSWORD="$(tr -dc a-za-z0-9 </dev/urandom | head -c 32; echo)"
|
||||
PHYRE_PANEL_DB_NAME="phyre$(tr -dc a-za-z0-9 </dev/urandom | head -c 13; echo)"
|
||||
PHYRE_PANEL_DB_USER="phyre$(tr -dc a-za-z0-9 </dev/urandom | head -c 13; echo)"
|
||||
|
||||
mysql -uroot -proot <<MYSQL_SCRIPT
|
||||
CREATE DATABASE $PHYRE_PANEL_DB_NAME;
|
||||
CREATE USER '$PHYRE_PANEL_DB_USER'@'localhost' IDENTIFIED BY '$PHYRE_PANEL_DB_PASSWORD';
|
||||
GRANT ALL PRIVILEGES ON $PHYRE_PANEL_DB_NAME.* TO '$PHYRE_PANEL_DB_USER'@'localhost';
|
||||
FLUSH PRIVILEGES;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
mysql_secure_installation --use-default
|
||||
|
||||
# Change mysql root password
|
||||
MYSQL_ROOT_PASSWORD="$(tr -dc a-za-z0-9 </dev/urandom | head -c 32; echo)"
|
||||
mysql -uroot -proot <<MYSQL_SCRIPT
|
||||
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '$MYSQL_ROOT_PASSWORD';
|
||||
FLUSH PRIVILEGES;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
# Save mysql root password
|
||||
echo "$MYSQL_ROOT_PASSWORD" > /root/.mysql_root_password
|
||||
|
||||
# Configure the application
|
||||
phyre-php artisan phyre:set-ini-settings APP_ENV "local"
|
||||
phyre-php artisan phyre:set-ini-settings APP_URL "127.0.0.1:8443"
|
||||
phyre-php artisan phyre:set-ini-settings APP_NAME "PHYRE_PANEL"
|
||||
phyre-php artisan phyre:set-ini-settings DB_DATABASE "$PHYRE_PANEL_DB_NAME"
|
||||
phyre-php artisan phyre:set-ini-settings DB_USERNAME "$PHYRE_PANEL_DB_USER"
|
||||
phyre-php artisan phyre:set-ini-settings DB_PASSWORD "$PHYRE_PANEL_DB_PASSWORD"
|
||||
phyre-php artisan phyre:set-ini-settings DB_CONNECTION "mysql"
|
||||
phyre-php artisan phyre:set-ini-settings MYSQL_ROOT_USERNAME "$MYSQL_PHYRE_ROOT_USERNAME"
|
||||
phyre-php artisan phyre:set-ini-settings MYSQL_ROOT_PASSWORD "$MYSQL_PHYRE_ROOT_PASSWORD"
|
||||
phyre-php artisan phyre:key-generate
|
||||
|
||||
phyre-php artisan migrate
|
||||
phyre-php artisan db:seed
|
||||
|
||||
phyre-php artisan phyre:set-ini-settings APP_ENV "production"
|
||||
|
||||
chmod -R o+w /usr/local/phyre/web/storage/
|
||||
chmod -R o+w /usr/local/phyre/web/bootstrap/cache/
|
||||
|
||||
|
||||
service phyre start
|
||||
|
||||
CURRENT_IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
echo "PhyrePanel downloaded successfully."
|
||||
echo "Please visit https://$CURRENT_IP:8443 to continue installation of the panel."
|
16
installers/ubuntu-24.04/greeting.sh
Normal file
16
installers/ubuntu-24.04/greeting.sh
Normal file
|
@ -0,0 +1,16 @@
|
|||
#!/bin/bash
|
||||
|
||||
CURRENT_IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
echo " \
|
||||
____ _ ___ ______ _____ ____ _ _ _ _____ _
|
||||
| _ \| | | \ \ / / _ \| ____| | _ \ / \ | \ | | ____| |
|
||||
| |_) | |_| |\ V /| |_) | _| | |_) / _ \ | \| | _| | |
|
||||
| __/| _ | | | | _ <| |___ | __/ ___ \| |\ | |___| |___
|
||||
|_| |_| |_| |_| |_| \_\_____| |_| /_/ \_\_| \_|_____|_____
|
||||
WELCOME TO PHYRE PANEL!
|
||||
OS: Ubuntu 24.04
|
||||
You can login at: https://$CURRENT_IP:8443
|
||||
"
|
||||
|
||||
# File can be saved at: /etc/profile.d/greeting.sh
|
69
installers/ubuntu-24.04/install-partial/install_base.sh
Normal file
69
installers/ubuntu-24.04/install-partial/install_base.sh
Normal file
|
@ -0,0 +1,69 @@
|
|||
#!/bin/bash
|
||||
|
||||
INSTALL_DIR="/phyre/install"
|
||||
|
||||
apt-get update && apt-get install ca-certificates
|
||||
|
||||
mkdir -p $INSTALL_DIR
|
||||
|
||||
cd $INSTALL_DIR
|
||||
|
||||
DEPENDENCIES_LIST=(
|
||||
"openssl"
|
||||
"jq"
|
||||
"curl"
|
||||
"wget"
|
||||
"unzip"
|
||||
"zip"
|
||||
"tar"
|
||||
"mysql-common"
|
||||
"mysql-server"
|
||||
"mysql-client"
|
||||
"lsb-release"
|
||||
"gnupg2"
|
||||
"ca-certificates"
|
||||
"apt-transport-https"
|
||||
"software-properties-common"
|
||||
"supervisor"
|
||||
"libonig-dev"
|
||||
"libzip-dev"
|
||||
"libcurl4-openssl-dev"
|
||||
"libsodium23"
|
||||
"libpq5"
|
||||
"apache2"
|
||||
"libapache2-mod-ruid2"
|
||||
"libapache2-mod-php"
|
||||
"libssl-dev"
|
||||
"zlib1g-dev"
|
||||
)
|
||||
# Check if the dependencies are installed
|
||||
for DEPENDENCY in "${DEPENDENCIES_LIST[@]}"; do
|
||||
apt install -yq $DEPENDENCY
|
||||
done
|
||||
|
||||
# Start MySQL
|
||||
service mysql start
|
||||
|
||||
mkdir -p /usr/local/phyre/ssl
|
||||
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/server/ssl/phyre.crt -O /usr/local/phyre/ssl/phyre.crt
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/server/ssl/phyre.key -O /usr/local/phyre/ssl/phyre.key
|
||||
|
||||
sudo chmod 644 /usr/local/phyre/ssl/phyre.crt
|
||||
sudo chmod 600 /usr/local/phyre/ssl/phyre.key
|
||||
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/ubuntu-24.04/greeting.sh -O /etc/profile.d/phyre-greeting.sh
|
||||
|
||||
# Install PHYRE PHP
|
||||
wget https://github.com/PhyreApps/PhyrePanelPHP/raw/main/compilators/debian/php/dist/phyre-php-8.2.0-ubuntu-24.04.deb
|
||||
dpkg -i phyre-php-8.2.0-ubuntu-24.04.deb
|
||||
|
||||
# Install PHYRE NGINX
|
||||
wget https://github.com/PhyreApps/PhyrePanelNGINX/raw/main/compilators/debian/nginx/dist/phyre-nginx-1.24.0-ubuntu-24.04.deb
|
||||
dpkg -i phyre-nginx-1.24.0-ubuntu-24.04.deb
|
||||
|
||||
PHYRE_PHP=/usr/local/phyre/php/bin/php
|
||||
|
||||
ln -s $PHYRE_PHP /usr/bin/phyre-php
|
||||
|
||||
curl -s https://phyrepanel.com/api/phyre-installation-log -X POST -H "Content-Type: application/json" -d '{"os": "ubuntu-24.04"}'
|
|
@ -52,21 +52,21 @@ wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/refs/heads/main/web/
|
|||
sudo chmod 644 /usr/local/phyre/ssl/phyre.crt
|
||||
sudo chmod 600 /usr/local/phyre/ssl/phyre.key
|
||||
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/ubuntu-22.04/greeting.sh -O /etc/profile.d/phyre-greeting.sh
|
||||
wget https://raw.githubusercontent.com/PhyreApps/PhyrePanel/main/installers/ubuntu-24.04/greeting.sh -O /etc/profile.d/phyre-greeting.sh
|
||||
|
||||
# Install PHYRE PHP
|
||||
wget https://github.com/PhyreApps/PhyrePanelPHP/raw/main/compilators/debian/php/dist/phyre-php-8.2.0-ubuntu-22.04.deb
|
||||
dpkg -i phyre-php-8.2.0-ubuntu-22.04.deb
|
||||
wget https://github.com/PhyreApps/PhyrePanelPHP/raw/main/compilators/debian/php/dist/phyre-php-8.2.0-ubuntu-24.04.deb
|
||||
dpkg -i phyre-php-8.2.0-ubuntu-24.04.deb
|
||||
|
||||
# Install PHYRE NGINX
|
||||
wget https://github.com/PhyreApps/PhyrePanelNGINX/raw/main/compilators/debian/nginx/dist/phyre-nginx-1.24.0-ubuntu-22.04.deb
|
||||
dpkg -i phyre-nginx-1.24.0-ubuntu-22.04.deb
|
||||
wget https://github.com/PhyreApps/PhyrePanelNGINX/raw/main/compilators/debian/nginx/dist/phyre-nginx-1.24.0-ubuntu-24.04.deb
|
||||
dpkg -i phyre-nginx-1.24.0-ubuntu-24.04.deb
|
||||
|
||||
PHYRE_PHP=/usr/local/phyre/php/bin/php
|
||||
|
||||
ln -s $PHYRE_PHP /usr/bin/phyre-php
|
||||
|
||||
curl -s https://phyrepanel.com/api/phyre-installation-log -X POST -H "Content-Type: application/json" -d '{"os": "ubuntu-22.04"}'
|
||||
curl -s https://phyrepanel.com/api/phyre-installation-log -X POST -H "Content-Type: application/json" -d '{"os": "ubuntu-24.04"}'
|
||||
#!/bin/bash
|
||||
|
||||
HOSTNAME=$(hostname)
|
||||
|
@ -102,12 +102,12 @@ cd /usr/local/phyre/web
|
|||
|
||||
|
||||
mysql -uroot -proot <<MYSQL_SCRIPT
|
||||
SET GLOBAL validate_password.policy = LOW;
|
||||
SET GLOBAL validate_password.length = 6;
|
||||
SET GLOBAL validate_password.mixed_case_count = 0;
|
||||
SET GLOBAL validate_password.number_count = 0;
|
||||
SET GLOBAL validate_password.special_char_count = 0;
|
||||
FLUSH PRIVILEGES;
|
||||
SET GLOBAL validate_password.policy = LOW;
|
||||
SET GLOBAL validate_password.length = 6;
|
||||
SET GLOBAL validate_password.mixed_case_count = 0;
|
||||
SET GLOBAL validate_password.number_count = 0;
|
||||
SET GLOBAL validate_password.special_char_count = 0;
|
||||
FLUSH PRIVILEGES;
|
||||
MYSQL_SCRIPT
|
||||
|
||||
# Create MySQL user
|
||||
|
@ -171,4 +171,12 @@ service phyre start
|
|||
CURRENT_IP=$(hostname -I | awk '{print $1}')
|
||||
|
||||
echo "PhyrePanel downloaded successfully."
|
||||
echo "Please visit https://$CURRENT_IP:8443 to continue installation of the panel."
|
||||
|
||||
# Parse argument --dont-ask
|
||||
if [ "$1" == "--dont-ask" ]; then
|
||||
echo "PhyrePanel is now available at https://$CURRENT_IP:8443"
|
||||
exit 0
|
||||
else
|
||||
phyre-php artisan phyre:install-apache
|
||||
phyre-php artisan phyre:setup-master-domain-ssl
|
||||
fi
|
|
@ -1 +1 @@
|
|||
0.0.3
|
||||
0.1.7
|
|
@ -32,7 +32,7 @@ class CustomerPanelProvider extends PanelProvider
|
|||
$brandLogo = asset('images/phyre-logo.svg');
|
||||
|
||||
$isAppInstalled = file_exists(storage_path('installed'));
|
||||
if ($isAppInstalled) {
|
||||
if ($isAppInstalled && !(php_sapi_name() === 'cli' || php_sapi_name() === 'phpdbg')) {
|
||||
if (setting('general.brand_logo_url')) {
|
||||
$brandLogo = setting('general.brand_logo_url');
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"description": "",
|
||||
"keywords": [],
|
||||
"priority": 0,
|
||||
"logoIcon": "email-logo",
|
||||
"logoIcon": "Modules/Email/resources/assets/email-svg/logo.svg",
|
||||
"category": "DevOps",
|
||||
"adminUrl": "/admin/email",
|
||||
"providers": [
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 20 20">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="50px" height="50px" viewBox="0 0 20 20">
|
||||
<path fill="currentColor" d="M18 2a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4c0-1.1.9-2 2-2zm-4.37 9.1L20 16v-2l-5.12-3.9L20 6V4l-10 8L0 4v2l5.12 4.1L0 14v2l6.37-4.9L10 14z" />
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 280 B After Width: | Height: | Size: 284 B |
|
@ -13,13 +13,14 @@ use Filament\Forms\Components\Section;
|
|||
use Filament\Forms\Components\Select;
|
||||
use Filament\Forms\Components\TextInput;
|
||||
use Filament\Forms\Components\Wizard;
|
||||
use Filament\Forms\Form;
|
||||
use Filament\Notifications\Notification;
|
||||
use Filament\Support\Exceptions\Halt;
|
||||
use Illuminate\Support\Str;
|
||||
use Modules\LetsEncrypt\Filament\Clusters\LetsEncryptCluster;
|
||||
use Outerweb\FilamentSettings\Filament\Pages\Settings as BaseSettings;
|
||||
|
||||
class WildcardDomain extends BaseSettings
|
||||
class IssueWildcardCertificate extends BaseSettings
|
||||
{
|
||||
protected static ?string $navigationGroup = 'Let\'s Encrypt';
|
||||
|
||||
|
@ -36,8 +37,9 @@ class WildcardDomain extends BaseSettings
|
|||
|
||||
public static function getNavigationLabel() : string
|
||||
{
|
||||
return 'Wildcard Domain';
|
||||
return 'Issue Wildcard Certificate';
|
||||
}
|
||||
|
||||
public function getFormActions() : array
|
||||
{
|
||||
return [
|
||||
|
@ -183,7 +185,7 @@ class WildcardDomain extends BaseSettings
|
|||
|
||||
}
|
||||
|
||||
public function schema(): array
|
||||
public function form(Form $form): Form
|
||||
{
|
||||
if (request()->get('step', null) === 'verification') {
|
||||
$this->getInstallLog();
|
||||
|
@ -193,12 +195,11 @@ class WildcardDomain extends BaseSettings
|
|||
|
||||
Wizard::make([
|
||||
Wizard\Step::make('Install')
|
||||
//->description('Install a wildcard SSL certificate for the master domain')
|
||||
->description('Issue new wildcard SSL certificate for domain')
|
||||
->schema([
|
||||
TextInput::make('wildcard_domain')
|
||||
->helperText('Install a wildcard SSL certificate for the master domain')
|
||||
->placeholder(setting('general.wildcard_domain'))
|
||||
->disabled(),
|
||||
->helperText('Issue new wildcard SSL certificate for domain. Example: *.mysite.com')
|
||||
->placeholder('*.mysite.com'),
|
||||
])->afterValidation(function () {
|
||||
if (file_exists($this->installLogFilePath)) {
|
||||
unlink($this->installLogFilePath);
|
|
@ -15,4 +15,11 @@ class MicroweberInstallation extends Model
|
|||
return $this->hasOne(Domain::class, 'id', 'domain_id');
|
||||
}
|
||||
|
||||
public function getTemplateAttribute()
|
||||
{
|
||||
if (empty($this->template)) {
|
||||
return 'Default';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,7 +20,7 @@ class Version extends Page
|
|||
|
||||
protected static ?string $cluster = MicroweberCluster::class;
|
||||
|
||||
protected static ?string $navigationIcon = 'heroicon-o-document-text';
|
||||
protected static ?string $navigationIcon = 'mw-mw_logo_small_white';
|
||||
|
||||
protected static string $view = 'microweber::filament.admin.pages.version';
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ class InstallationResource extends Resource
|
|||
{
|
||||
protected static ?string $model = MicroweberInstallation::class;
|
||||
|
||||
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
|
||||
protected static ?string $navigationIcon = 'heroicon-o-globe-americas';
|
||||
|
||||
protected static ?string $navigationGroup = 'Microweber';
|
||||
|
||||
|
@ -49,12 +49,13 @@ class InstallationResource extends Resource
|
|||
//
|
||||
])
|
||||
->actions([
|
||||
Tables\Actions\EditAction::make(),
|
||||
|
||||
// Tables\Actions\EditAction::make(),
|
||||
])
|
||||
->bulkActions([
|
||||
Tables\Actions\BulkActionGroup::make([
|
||||
Tables\Actions\DeleteBulkAction::make(),
|
||||
]),
|
||||
// Tables\Actions\BulkActionGroup::make([
|
||||
// Tables\Actions\DeleteBulkAction::make(),
|
||||
// ]),
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class ListInstallations extends ListRecords
|
|||
protected function getHeaderActions(): array
|
||||
{
|
||||
return [
|
||||
Actions\CreateAction::make(),
|
||||
// Actions\CreateAction::make(),
|
||||
Actions\Action::make('Scan for installations')->action('scanForInstallations'),
|
||||
];
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ use App\Models\Domain;
|
|||
use App\Models\HostingPlan;
|
||||
use App\Models\HostingSubscription;
|
||||
use App\Services\HostingSubscriptionService;
|
||||
use App\SupportedApplicationTypes;
|
||||
use Illuminate\Support\Str;
|
||||
use MicroweberPackages\SharedServerScripts\MicroweberWhitelabelSettingsUpdater;
|
||||
use MicroweberPackages\SharedServerScripts\MicroweberWhitelabelWebsiteApply;
|
||||
|
@ -42,7 +43,15 @@ class DomainIsCreatedListener
|
|||
return;
|
||||
}
|
||||
|
||||
if (!in_array('microweber', $findHostingPlan->additional_services)) {
|
||||
$skip = true;
|
||||
if (in_array('microweber', $findHostingPlan->additional_services)) {
|
||||
$skip = false;
|
||||
}
|
||||
if (in_array('microweber_custom', $findHostingPlan->additional_services)) {
|
||||
$skip = false;
|
||||
}
|
||||
|
||||
if ($skip) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -50,6 +59,16 @@ class DomainIsCreatedListener
|
|||
return;
|
||||
}
|
||||
|
||||
if (isset($findHostingPlan->default_server_application_settings['php_version'])) {
|
||||
$phpVersion = $findHostingPlan->default_server_application_settings['php_version'];
|
||||
$phpSbin = 'php' .$phpVersion;
|
||||
} else {
|
||||
$supportedPhpVersions = SupportedApplicationTypes::getPHPVersions();
|
||||
$phpVersion = end($supportedPhpVersions);
|
||||
$phpVersion = str_replace('PHP ', '', $phpVersion);
|
||||
$phpSbin = 'php' . $phpVersion;
|
||||
}
|
||||
|
||||
$databasesAreCreated = false;
|
||||
$createdDatabaseUsername = null;
|
||||
$createdDatabaseUserPassword = null;
|
||||
|
@ -143,9 +162,19 @@ class DomainIsCreatedListener
|
|||
}
|
||||
|
||||
$username = Str::random(8);
|
||||
$install->setAdminEmail($username . '@'.$emailDomain);
|
||||
$install->setAdminUsername($username);
|
||||
$install->setAdminPassword(Str::random(8));
|
||||
|
||||
|
||||
$install->setPhpSbin($phpSbin);
|
||||
|
||||
if (in_array('microweber_custom', $findHostingPlan->additional_services)) {
|
||||
$install->setAdminEmail(null);
|
||||
$install->setAdminUsername(null);
|
||||
$install->setAdminPassword(null);
|
||||
} else {
|
||||
$install->setAdminEmail($username . '@'.$emailDomain);
|
||||
$install->setAdminUsername($username);
|
||||
$install->setAdminPassword(Str::random(8));
|
||||
}
|
||||
|
||||
$status = $install->run();
|
||||
|
||||
|
|
44
web/Modules/Microweber/Listeners/DomainIsDeletedListener.php
Normal file
44
web/Modules/Microweber/Listeners/DomainIsDeletedListener.php
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?php
|
||||
|
||||
namespace Modules\Microweber\Listeners;
|
||||
|
||||
use App\Events\DomainIsCreated;
|
||||
use App\Events\DomainIsDeleted;
|
||||
use App\Models\Database;
|
||||
use App\Models\DatabaseUser;
|
||||
use App\Models\Domain;
|
||||
use App\Models\HostingPlan;
|
||||
use App\Models\HostingSubscription;
|
||||
use App\Services\HostingSubscriptionService;
|
||||
use App\SupportedApplicationTypes;
|
||||
use Illuminate\Support\Str;
|
||||
use MicroweberPackages\SharedServerScripts\MicroweberWhitelabelSettingsUpdater;
|
||||
use MicroweberPackages\SharedServerScripts\MicroweberWhitelabelWebsiteApply;
|
||||
use Modules\Microweber\App\Actions\MicroweberScanner;
|
||||
use Modules\Microweber\App\Models\MicroweberInstallation;
|
||||
|
||||
class DomainIsDeletedListener
|
||||
{
|
||||
/**
|
||||
* Create the event listener.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the event.
|
||||
*/
|
||||
public function handle(DomainIsDeleted $event): void
|
||||
{
|
||||
|
||||
try {
|
||||
$newMwScan = new MicroweberScanner();
|
||||
$newMwScan->handle();
|
||||
} catch (\Exception $e) {
|
||||
\Log::error($e->getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@
|
|||
],
|
||||
"require": {
|
||||
"microweber-packages/composer-client": "^2.1",
|
||||
"microweber-packages/shared-server-scripts": "^0.9"
|
||||
"microweber-packages/shared-server-scripts": "^1.1"
|
||||
},
|
||||
"extra": {
|
||||
"laravel": {
|
||||
|
|
29
web/Modules/Microweber/composer.lock
generated
29
web/Modules/Microweber/composer.lock
generated
|
@ -4,29 +4,26 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "9dc38d0bad59547186ae06a5b08a1139",
|
||||
"content-hash": "33409785a55bd5b1d18a3b7db9f4a7d0",
|
||||
"packages": [
|
||||
{
|
||||
"name": "microweber-packages/composer-client",
|
||||
"version": "2.1",
|
||||
"version": "2.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/microweber-packages/composer-client.git",
|
||||
"reference": "a7d3c512bc7a14c2261fbd1de610afb97db230d9"
|
||||
"reference": "5decacf13f65f7deb4f5214e90dbfcac3b638312"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/microweber-packages/composer-client/zipball/a7d3c512bc7a14c2261fbd1de610afb97db230d9",
|
||||
"reference": "a7d3c512bc7a14c2261fbd1de610afb97db230d9",
|
||||
"url": "https://api.github.com/repos/microweber-packages/composer-client/zipball/5decacf13f65f7deb4f5214e90dbfcac3b638312",
|
||||
"reference": "5decacf13f65f7deb4f5214e90dbfcac3b638312",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-json": "*",
|
||||
"php": ">=7.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.0 || ^9.0"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
|
@ -52,22 +49,22 @@
|
|||
"support": {
|
||||
"email": "support@microweber.com",
|
||||
"issues": "https://github.com/microweber-packages/composer-client/issues",
|
||||
"source": "https://github.com/microweber-packages/composer-client/tree/2.1"
|
||||
"source": "https://github.com/microweber-packages/composer-client/tree/2.2"
|
||||
},
|
||||
"time": "2024-09-02T11:22:20+00:00"
|
||||
"time": "2025-01-23T07:21:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "microweber-packages/shared-server-scripts",
|
||||
"version": "0.9",
|
||||
"version": "1.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/microweber-packages/shared-server-scripts.git",
|
||||
"reference": "5d5e9f77de598c24b6a81b7cad641c828e45963c"
|
||||
"reference": "9d6bb63178153ea8917c72a7975866975d1c62a5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/microweber-packages/shared-server-scripts/zipball/5d5e9f77de598c24b6a81b7cad641c828e45963c",
|
||||
"reference": "5d5e9f77de598c24b6a81b7cad641c828e45963c",
|
||||
"url": "https://api.github.com/repos/microweber-packages/shared-server-scripts/zipball/9d6bb63178153ea8917c72a7975866975d1c62a5",
|
||||
"reference": "9d6bb63178153ea8917c72a7975866975d1c62a5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -106,9 +103,9 @@
|
|||
"support": {
|
||||
"email": "support@microweber.com",
|
||||
"issues": "https://github.com/microweber-packages/shared-server-scripts/issues",
|
||||
"source": "https://github.com/microweber-packages/shared-server-scripts/tree/0.9"
|
||||
"source": "https://github.com/microweber-packages/shared-server-scripts/tree/1.1"
|
||||
},
|
||||
"time": "2024-10-10T07:08:41+00:00"
|
||||
"time": "2025-02-07T13:17:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"description": "",
|
||||
"keywords": [],
|
||||
"priority": 0,
|
||||
"logoIcon": "mw-mw_logo_small_white",
|
||||
"logoIcon": "Modules/Microweber/resources/assets/mw-svg/mw_logo_small_white.svg",
|
||||
"category": "Content Management",
|
||||
"adminUrl": "/admin/microweber/installations",
|
||||
"providers": [
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 22.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
|
||||
<svg version="1.1" width="50px" height="50px" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 50 50" style="enable-background:new 0 0 50 50;" xml:space="preserve">
|
||||
|
||||
<path fill="currentColor" d="M47.5,37.9C47.5,37.9,47.5,37.9,47.5,37.9c-0.4,0.8-0.9,1.5-1.5,2.2c0,0,0,0,0,0c-1.1,1.3-2.5,2.2-4.2,2.7 L25.2,48c-0.7,0.2-1.5,0.1-2.2-0.3c-0.6-0.4-1.1-1.1-1.1-1.9l-3-32.8l0.7,0.1l1.5,0.1l3,0.2c0.9,0.1,1.7,0.8,1.8,1.6l3.1,24.1 l6.3-1.4L31.6,14l0.7,0.1l1.1,0.1l2.1,0.2c0.7,0.1,1.3,0.7,1.5,1.3l3.7,20.8l4.8-1.1l-4.2-20.7c-0.5-2.6-2.9-4.9-5.4-5.2L13.6,6.5 c-0.8-0.1-1.5,0.1-2.1,0.7c-0.6,0.5-0.9,1.3-0.8,2l2,37.2l0.1,2.1l0,0.8C6.4,47.9,1.6,42.7,1.6,35.9L1.4,11.7c0-2.9,1.1-5.4,3-7.1 C6.1,3,8.4,1.9,11,1.4c2.1-0.4,4.4-0.4,6.7,0.1l17.3,3.4c4.9,0.9,9.3,5.4,10.3,10.2l3.1,14.3C49.2,32.3,48.8,35.4,47.5,37.9z"/>
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 985 B After Width: | Height: | Size: 1,013 B |
114
web/Modules/SSLManager/App/Console/RenewSSL.php
Normal file
114
web/Modules/SSLManager/App/Console/RenewSSL.php
Normal file
|
@ -0,0 +1,114 @@
|
|||
<?php
|
||||
|
||||
namespace Modules\SSLManager\App\Console;
|
||||
|
||||
use App\Jobs\ApacheBuild;
|
||||
use App\Models\CronJob;
|
||||
use App\Models\Domain;
|
||||
use Illuminate\Console\Command;
|
||||
use Modules\SSLManager\App\Jobs\SecureDomain;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
|
||||
class RenewSSL extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*/
|
||||
protected $signature = 'ssl-manager:renew-ssl';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*/
|
||||
protected $description = 'Renew SSL certificates';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
|
||||
$this->_checkForAutoRenewalCron();
|
||||
|
||||
$getDomains = Domain::where('status', Domain::STATUS_ACTIVE)
|
||||
->get();
|
||||
if ($getDomains->count() > 0) {
|
||||
foreach ($getDomains as $domain) {
|
||||
$checkDomainStatus = $this->_checkForSSL($domain->domain);
|
||||
if ($checkDomainStatus) {
|
||||
$this->info('SSL certificate for ' . $domain->domain . ' is valid');
|
||||
} else {
|
||||
$this->info('SSL certificate for ' . $domain->domain . ' is expired');
|
||||
try {
|
||||
$this->_renewSSL($domain);
|
||||
} catch (\Exception $e) {
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Rebuild Apache configuration
|
||||
$this->info('Rebuilding Apache configuration');
|
||||
$apacheBuild = new ApacheBuild(true);
|
||||
$apacheBuild->handle();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private function _renewSSL($domain)
|
||||
{
|
||||
// Renew SSL
|
||||
$this->info('Renewing SSL certificate for ' . $domain->domain);
|
||||
|
||||
$run = new SecureDomain($domain->id);
|
||||
$run->handle();
|
||||
|
||||
}
|
||||
|
||||
|
||||
private function _checkForSSL($domain)
|
||||
{
|
||||
|
||||
// Check with CURL
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_URL, "https://" . $domain);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
||||
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
|
||||
|
||||
$data = curl_exec($ch);
|
||||
|
||||
$sslInfo = curl_getinfo($ch);
|
||||
|
||||
if ($sslInfo['http_code'] == 200) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public function _checkForAutoRenewalCron()
|
||||
{
|
||||
$cronJobCommand = 'phyre-php /usr/local/phyre/web/artisan ssl-manager:renew-ssl';
|
||||
$findCronJob = CronJob::where('command', $cronJobCommand)->first();
|
||||
if (! $findCronJob) {
|
||||
$cronJob = new CronJob();
|
||||
$cronJob->schedule = '0 0 * * *';
|
||||
$cronJob->command = $cronJobCommand;
|
||||
$cronJob->user = 'root';
|
||||
$cronJob->save();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue