feat: add cloudflare tunnel support
This commit is contained in:
		@@ -23,6 +23,7 @@ class Form extends Component
 | 
			
		||||
        'server.ip' => 'required',
 | 
			
		||||
        'server.user' => 'required',
 | 
			
		||||
        'server.port' => 'required',
 | 
			
		||||
        'server.settings.is_cloudflare_tunnel' => 'required',
 | 
			
		||||
        'server.settings.is_reachable' => 'required',
 | 
			
		||||
        'server.settings.is_part_of_swarm' => 'required',
 | 
			
		||||
        'wildcard_domain' => 'nullable|url',
 | 
			
		||||
@@ -33,6 +34,7 @@ class Form extends Component
 | 
			
		||||
        'server.ip' => 'ip',
 | 
			
		||||
        'server.user' => 'user',
 | 
			
		||||
        'server.port' => 'port',
 | 
			
		||||
        'server.settings.is_cloudflare_tunnel' => 'Cloudflare Tunnel',
 | 
			
		||||
        'server.settings.is_reachable' => 'is reachable',
 | 
			
		||||
        'server.settings.is_part_of_swarm' => 'is part of swarm'
 | 
			
		||||
    ];
 | 
			
		||||
@@ -42,7 +44,9 @@ class Form extends Component
 | 
			
		||||
        $this->wildcard_domain = $this->server->settings->wildcard_domain;
 | 
			
		||||
        $this->cleanup_after_percentage = $this->server->settings->cleanup_after_percentage;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function instantSave() {
 | 
			
		||||
        $this->server->settings->save();
 | 
			
		||||
    }
 | 
			
		||||
    public function installDocker()
 | 
			
		||||
    {
 | 
			
		||||
        $this->dockerInstallationStarted = true;
 | 
			
		||||
 
 | 
			
		||||
@@ -85,6 +85,9 @@ function generateSshCommand(Server $server, string $command, bool $isMux = true)
 | 
			
		||||
    if ($isMux && config('coolify.mux_enabled')) {
 | 
			
		||||
        $ssh_command .= '-o ControlMaster=auto -o ControlPersist=1m -o ControlPath=/var/www/html/storage/app/ssh/mux/%h_%p_%r ';
 | 
			
		||||
    }
 | 
			
		||||
    if (data_get($server,'settings.is_cloudflare_tunnel')) {
 | 
			
		||||
        $ssh_command .= '-o ProxyCommand="/usr/local/bin/cloudflared access ssh --hostname %h" ';
 | 
			
		||||
    }
 | 
			
		||||
    $command = "PATH=\$PATH:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/host/usr/local/sbin:/host/usr/local/bin:/host/usr/sbin:/host/usr/bin:/host/sbin:/host/bin && $command";
 | 
			
		||||
    $ssh_command .= "-i {$privateKeyLocation} "
 | 
			
		||||
        . '-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null '
 | 
			
		||||
@@ -98,7 +101,7 @@ function generateSshCommand(Server $server, string $command, bool $isMux = true)
 | 
			
		||||
        . " 'bash -se' << \\$delimiter" . PHP_EOL
 | 
			
		||||
        . $command . PHP_EOL
 | 
			
		||||
        . $delimiter;
 | 
			
		||||
    // ray($ssh_command);
 | 
			
		||||
    ray($ssh_command);
 | 
			
		||||
    return $ssh_command;
 | 
			
		||||
}
 | 
			
		||||
function instant_remote_process(Collection|array $command, Server $server, $throwError = true)
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,28 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use Illuminate\Database\Migrations\Migration;
 | 
			
		||||
use Illuminate\Database\Schema\Blueprint;
 | 
			
		||||
use Illuminate\Support\Facades\Schema;
 | 
			
		||||
 | 
			
		||||
return new class extends Migration
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Run the migrations.
 | 
			
		||||
     */
 | 
			
		||||
    public function up(): void
 | 
			
		||||
    {
 | 
			
		||||
        Schema::table('server_settings', function (Blueprint $table) {
 | 
			
		||||
            $table->boolean('is_cloudflare_tunnel')->default(false);
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Reverse the migrations.
 | 
			
		||||
     */
 | 
			
		||||
    public function down(): void
 | 
			
		||||
    {
 | 
			
		||||
        Schema::table('server_settings', function (Blueprint $table) {
 | 
			
		||||
            $table->dropColumn('is_cloudflare_tunnel');
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
@@ -10,7 +10,7 @@ ARG DOCKER_BUILDX_VERSION=0.11.2
 | 
			
		||||
# https://github.com/buildpacks/pack/releases
 | 
			
		||||
ARG PACK_VERSION=0.30.0
 | 
			
		||||
# https://github.com/railwayapp/nixpacks/releases
 | 
			
		||||
ARG NIXPACKS_VERSION=1.14.0
 | 
			
		||||
ARG NIXPACKS_VERSION=1.16.0
 | 
			
		||||
 | 
			
		||||
USER root
 | 
			
		||||
WORKDIR /artifacts
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,9 @@
 | 
			
		||||
FROM serversideup/php:8.2-fpm-nginx
 | 
			
		||||
 | 
			
		||||
ARG TARGETPLATFORM
 | 
			
		||||
# https://github.com/cloudflare/cloudflared/releases
 | 
			
		||||
ARG CLOUDFLARED_VERSION=2023.8.2
 | 
			
		||||
 | 
			
		||||
ARG POSTGRES_VERSION=15
 | 
			
		||||
RUN apt-get update
 | 
			
		||||
# Postgres version requirements
 | 
			
		||||
@@ -13,15 +17,23 @@ RUN apt-get install postgresql-client-$POSTGRES_VERSION -y
 | 
			
		||||
 | 
			
		||||
# Coolify requirements
 | 
			
		||||
RUN apt-get install -y php-pgsql openssh-client git git-lfs jq lsof
 | 
			
		||||
 | 
			
		||||
RUN apt-get -y autoremove && apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/*
 | 
			
		||||
COPY --chmod=755 docker/dev-ssu/etc/s6-overlay/ /etc/s6-overlay/
 | 
			
		||||
 | 
			
		||||
COPY docker/dev-ssu/nginx.conf /etc/nginx/conf.d/custom.conf
 | 
			
		||||
 | 
			
		||||
RUN echo "alias ll='ls -al'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias a='php artisan'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias mfs='php artisan migrate:fresh --seed'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias cda='composer dump-autoload'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias run='./scripts/run'" >>/etc/bash.bashrc
 | 
			
		||||
 | 
			
		||||
COPY --chmod=755  docker/dev-ssu/etc/s6-overlay/ /etc/s6-overlay/
 | 
			
		||||
RUN mkdir -p /usr/local/bin
 | 
			
		||||
 | 
			
		||||
RUN /bin/bash -c "if [[ ${TARGETPLATFORM} == 'linux/amd64' ]]; then \
 | 
			
		||||
    echo 'amd64' && \
 | 
			
		||||
    curl -sSL https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared \
 | 
			
		||||
    ;fi"
 | 
			
		||||
 | 
			
		||||
RUN /bin/bash -c "if [[ ${TARGETPLATFORM} == 'linux/arm64' ]]; then \
 | 
			
		||||
    echo 'arm64' && \
 | 
			
		||||
    curl -L https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared \
 | 
			
		||||
    ;fi"
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,9 +12,14 @@ RUN npm install
 | 
			
		||||
RUN npm run build
 | 
			
		||||
 | 
			
		||||
FROM serversideup/php:8.2-fpm-nginx
 | 
			
		||||
WORKDIR /var/www/html
 | 
			
		||||
 | 
			
		||||
ARG TARGETPLATFORM
 | 
			
		||||
# https://github.com/cloudflare/cloudflared/releases
 | 
			
		||||
ARG CLOUDFLARED_VERSION=2023.8.2
 | 
			
		||||
ARG POSTGRES_VERSION=15
 | 
			
		||||
 | 
			
		||||
WORKDIR /var/www/html
 | 
			
		||||
 | 
			
		||||
RUN apt-get update
 | 
			
		||||
# Postgres version requirements
 | 
			
		||||
RUN apt install dirmngr ca-certificates software-properties-common gnupg gnupg2 apt-transport-https curl -y
 | 
			
		||||
@@ -44,7 +49,16 @@ RUN php artisan view:cache
 | 
			
		||||
 | 
			
		||||
RUN echo "alias ll='ls -al'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias a='php artisan'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias mfs='php artisan migrate:fresh --seed'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias cda='composer dump-autoload'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias run='./scripts/run'" >>/etc/bash.bashrc
 | 
			
		||||
RUN echo "alias logs='tail -f storage/logs/laravel.log'" >>/etc/bash.bashrc
 | 
			
		||||
 | 
			
		||||
RUN mkdir -p /usr/local/bin
 | 
			
		||||
 | 
			
		||||
RUN /bin/bash -c "if [[ ${TARGETPLATFORM} == 'linux/amd64' ]]; then \
 | 
			
		||||
    echo 'amd64' && \
 | 
			
		||||
    curl -sSL https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-amd64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared \
 | 
			
		||||
    ;fi"
 | 
			
		||||
 | 
			
		||||
RUN /bin/bash -c "if [[ ${TARGETPLATFORM} == 'linux/arm64' ]]; then \
 | 
			
		||||
    echo 'arm64' && \
 | 
			
		||||
    curl -L https://github.com/cloudflare/cloudflared/releases/download/${CLOUDFLARED_VERSION}/cloudflared-linux-arm64 -o /usr/local/bin/cloudflared && chmod +x /usr/local/bin/cloudflared \
 | 
			
		||||
    ;fi"
 | 
			
		||||
 
 | 
			
		||||
@@ -7,10 +7,6 @@ ARG DOCKER_VERSION=24.0.5
 | 
			
		||||
ARG DOCKER_COMPOSE_VERSION=2.21.0
 | 
			
		||||
# https://github.com/docker/buildx/releases
 | 
			
		||||
ARG DOCKER_BUILDX_VERSION=0.11.2
 | 
			
		||||
# https://github.com/buildpacks/pack/releases
 | 
			
		||||
ARG PACK_VERSION=0.30.0
 | 
			
		||||
# https://github.com/railwayapp/nixpacks/releases
 | 
			
		||||
ARG NIXPACKS_VERSION=1.14.0
 | 
			
		||||
 | 
			
		||||
USER root
 | 
			
		||||
WORKDIR /root
 | 
			
		||||
 
 | 
			
		||||
@@ -41,6 +41,10 @@
 | 
			
		||||
                    <x-forms.input type="number" id="server.port" label="Port" required />
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class="w-64">
 | 
			
		||||
                <x-forms.checkbox instantSave helper="If you are using Cloudflare Tunnels, enable this"
 | 
			
		||||
                    id="server.settings.is_cloudflare_tunnel" label="Cloudflare Tunnel" />
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        @if (!$server->settings->is_reachable)
 | 
			
		||||
            <x-forms.button class="mt-8 mb-4 box" wire:click.prevent='validateServer'>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user