Skip to main content

Reverse Proxy Setup

info

This documentation applies when OneDev is running in container or running on virtual machine/bare metal

You may configure OneDev to run behind Nginx or Apache Httpd to do reverse proxying. Below procedure assumes you are running Nginx or Apache Httpd on Ubuntu:

Nginx

  1. Assume your OneDev instance runs at port 6610, and you want to access it via http://onedev.example.com. Create a file named onedev.example.com with below content under directory /etc/nginx/sites-available:

    server {
    listen 80;
    listen [::]:80;

    server_name onedev.example.com;

    # maximum size of uploaded file. Increase this if your repository is very large
    client_max_body_size 100M;

    location /wicket/websocket {
    proxy_pass http://localhost:6610/wicket/websocket;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    }

    location /~server {
    proxy_pass http://localhost:6610/~server;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    }

    location / {
    proxy_pass http://localhost:6610/;
    }
    }
  2. Then, enable this site and restart Nginx server:

    sudo ln -s /etc/nginx/sites-available/git.example.com /etc/nginx/sites-enabled/onedev.example.com
    sudo service nginx restart

Apache Httpd

  1. Make sure you have Apache httpd server version 2.4.5 or higher installed

  2. Enable mod_proxy by running:

    sudo a2enmod proxy_http
  3. Enable mod_proxy_wstunnel by running:

    sudo a2enmod proxy_wstunnel
  4. Now assume your OneDev instance runs at port 6610, and you want to access it via http://onedev.example.com. Create a file named onedev.example.com.conf with below content under /etc/apache2/sites-available:

    <VirtualHost *:80>
    ServerName onedev.example.com

    ProxyRequests Off

    ProxyPreserveHost Off

    <Proxy *>
    Order deny,allow
    Allow from all
    </Proxy>

    ProxyPass /wicket/websocket ws://localhost:6610/wicket/websocket
    ProxyPass /~server ws://localhost:6610/~server
    ProxyPass / http://localhost:6610/
    ProxyPassReverse / http://localhost:6610/

    <Location />
    Order allow,deny
    Allow from all
    </Location>

    ErrorLog /var/log/apache2/onedev-error.log
    CustomLog /var/log/apache2/onedev-access.log combined
    LogLevel warn
    </VirtualHost>
  5. Then, enable this site and restart Apache httpd server:

    sudo a2ensite onedev.example.com.conf
    sudo service apache2 restart

Caddy Server

Running OneDev behind Caddy server is really simple, just start your caddy server as a reverse proxy:

caddy reverse-proxy --from onedev.example.com --to localhost:6610

Here we assume that OneDev is running at port 6610, and also you have a DNS record mapping onedev.example.com to ip address of the machine running OneDev and Caddy server