1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-10-18 05:49:03 +00:00
GNS3 server
Go to file
Jeremy Grossmann 8d69f7f792
Merge pull request #2157 from GNS3/qemu-tpm-support
Trusted Platform Module (TPM) support for Qemu VMs
2023-01-04 10:55:52 +05:45
.github/workflows Downgrade Ubuntu to 20.04 to fix missing Python 3.6 2022-12-18 14:24:50 +08:00
conf Add missing VMware settings in gns3_server.conf 2022-11-06 19:30:24 +08:00
docs Fix link for appliance JSON schema 2020-06-03 13:46:48 +02:00
gns3server Prevent TPM to run on Windows 2023-01-04 12:57:48 +08:00
init Update gns3.service.systemd 2022-10-02 23:25:58 -06:00
scripts Release web Ui 2.2.32 with correct version displayed 2022-04-27 18:24:36 +07:00
tests Add Trusted Platform Module (TPM) support for Qemu VMs 2023-01-04 12:13:19 +08:00
.coveragerc
.gitattributes
.gitignore Added workaround for #1690. Added venv/ to .gitignore 2019-11-10 20:41:39 +01:00
.whitesource Add .whitesource configuration file 2020-06-26 01:01:48 +00:00
appveyor.yml Upgrade to Visual Studio 2022 in appveyor.yml 2022-10-18 21:47:10 +08:00
AUTHORS
CHANGELOG Release v2.2.35.1 2022-11-10 22:21:13 +08:00
CONTRIBUTING.md
dev-requirements.txt Upgrade dependencies 2022-11-07 21:48:45 +08:00
Dockerfile chore : use --no-cache-dir flag to pip in dockerfiles to save space 2021-09-22 15:17:21 +05:30
gns3server.bat
LICENSE
mac-requirements.txt Move jsonschema 2.6.0 requirement in build repository. 2020-06-07 13:07:16 +09:30
MANIFEST.in Include conf file in MANIFEST.in Ref #2044 2022-03-28 14:45:29 +10:30
pytest.ini Remove pytest.ini from tests dir 2022-08-27 21:00:31 +02:00
README.rst Update README.rst about static busybox 2023-01-01 18:24:42 +08:00
readthedocs.yml Use Python3.6 to build the API documentation. 2018-11-20 15:35:46 +07:00
requirements.txt Revert "Install importlib-resources==1.3 with Python < 3.9" 2022-12-30 21:13:59 +08:00
SECURITY.md Create SECURITY.md 2022-03-14 14:27:32 +10:30
setup.py Use a stock BusyBox for the Docker integration 2023-01-01 17:04:48 +08:00
win-requirements.txt Upgrade pywin32 to v305 2022-11-08 23:39:10 +08:00

GNS3-server
===========

.. image:: https://github.com/GNS3/gns3-server/workflows/testing/badge.svg
    :target: https://github.com/GNS3/gns3-server/actions?query=workflow%3Atesting

.. image:: https://img.shields.io/pypi/v/gns3-server.svg
    :target: https://pypi.python.org/pypi/gns3-server

.. image:: https://snyk.io/test/github/GNS3/gns3-server/badge.svg
    :target: https://snyk.io/test/github/GNS3/gns3-server

This is the GNS3 server repository.

The GNS3 server manages emulators such as Dynamips, VirtualBox or Qemu/KVM.
Clients like the `GNS3 GUI <https://github.com/GNS3/gns3-gui/>`_ and the `GNS3 Web UI <https://github.com/GNS3/gns3-web-ui>`_ control the server using a HTTP REST API.

Software dependencies
---------------------

In addition of Python dependencies listed in a section below, other software may be required, recommended or optional.

* `uBridge <https://github.com/GNS3/ubridge/>`_ is required, it interconnects the nodes.
* `Dynamips <https://github.com/GNS3/dynamips/>`_ is required for running IOS routers (using real IOS images) as well as the internal switches and hubs.
* `VPCS <https://github.com/GNS3/vpcs/>`_ is recommended, it is a builtin node simulating a very simple computer to perform connectitivy tests using ping, traceroute etc.
* Qemu is strongly recommended on Linux, as most node types are based on Qemu, for example Cisco IOSv and Arista vEOS.
* libvirt is recommended (Linux only), as it's needed for the NAT cloud.
* Docker is optional (Linux only), some nodes are based on Docker.
* mtools is recommended to support data transfer to/from QEMU VMs using virtual disks.
* i386-libraries of libc and libcrypto are optional (Linux only), they are only needed to run IOU based nodes.

Docker support
**************

Docker support needs the script program (`bsdutils` or `util-linux` package), when running a docker VM and a static busybox during installation (python3 setup.py install / pip3 install / package creation).

Branches
--------

master
******
master is the next stable release, you can test it in your day to day activities.
Bug fixes or small improvements pull requests go here.

2.x (2.3 for example)
*********************
Next major release

*Never* use this branch for production. Pull requests for major new features go here.

Linux
-----

GNS3 is perhaps packaged for your distribution:

* Gentoo: https://packages.gentoo.org/package/net-misc/gns3-server
* Alpine: https://pkgs.alpinelinux.org/package/v3.10/community/x86_64/gns3-server
* NixOS: https://search.nixos.org/packages?channel=21.11&from=0&size=50&sort=relevance&type=packages&query=gns3-server


Linux (Debian based)
--------------------

The following instructions have been tested with Ubuntu and Mint.
You must be connected to the Internet in order to install the dependencies.

Dependencies:

- Python 3.6, setuptools and the ones listed `here <https://github.com/GNS3/gns3-server/blob/master/requirements.txt>`_

The following commands will install some of these dependencies:

.. code:: bash

   sudo apt-get install python3-setuptools

Finally these commands will install the server as well as the rest of the dependencies:

.. code:: bash

   cd gns3-server-master
   sudo python3 setup.py install
   gns3server

To run tests use:

.. code:: bash

   py.test -v


Docker container
****************

For development you can run the GNS3 server in a container

.. code:: bash

    bash scripts/docker_dev_server.sh


Run as daemon (Unix only)
**************************

You will find init sample scripts for various systems
inside the init directory.

Usefull options:

* --daemon: start process as a daemon
* --log logfile: store output in a logfile
* --pid pidfile: store the pid of the running process in a file and prevent double execution

All init scripts require the creation of a GNS3 user. You can change it to another user.

.. code:: bash

    sudo adduser gns3

upstart
-------

For ubuntu < 15.04

You need to copy init/gns3.conf.upstart to /etc/init/gns3.conf

.. code:: bash

    sudo chown root /etc/init/gns3.conf
    sudo service gns3 start


systemd
-------

You need to copy init/gns3.service.systemd to /lib/systemd/system/gns3.service

.. code:: bash

    sudo chown root /lib/systemd/system/gns3.service
    sudo systemctl start gns3

Windows
-------


Please use our `all-in-one installer <https://community.gns3.com/software/download>`_ to install the stable build.

If you install via source you need to first install:

- Python (3.3 or above) - https://www.python.org/downloads/windows/
- Pywin32 - https://sourceforge.net/projects/pywin32/

Then you can call

.. code:: bash

    python setup.py install

to install the remaining dependencies.

To run the tests, you also need to call

.. code:: bash

   pip install pytest pytest-capturelog

before actually running the tests with

.. code:: bash

   python setup.py test

or with

.. code:: bash

   py.test -v

Mac OS X
--------

Please use our DMG package for a simple installation.

If you want to test the current git version or contribute to the project,
you can follow these instructions with virtualenwrapper: http://virtualenvwrapper.readthedocs.org/
and homebrew: http://brew.sh/.

.. code:: bash

   brew install python3
   mkvirtualenv gns3-server --python=/usr/local/bin/python3.5
   python3 setup.py install
   gns3server

SSL
---

If you want enable SSL support on GNS3 you can generate a self signed certificate:

.. code:: bash

    bash gns3server/cert_utils/create_cert.sh

This command will put the files in ~/.config/GNS3/ssl

After you can start the server in SSL mode with:

.. code:: bash

    python gns3server/main.py --certfile ~/.config/GNS3/ssl/server.cert --certkey ~/.config/GNS3/ssl/server.key --ssl


Or in your gns3_server.conf by adding in the Server section:

.. code:: ini
    
    [Server]
    certfile=/Users/noplay/.config/GNS3/ssl/server.cert
    certkey=/Users/noplay/.config/GNS3/ssl/server.key
    ssl=True

Running tests
*************

Just run:

.. code:: bash

    py.test -vv

If you want test coverage:

.. code:: bash

    py.test --cov-report term-missing --cov=gns3server

Security issues
----------------
Please contact us using contact form available here:
http://docs.gns3.com/1ON9JBXSeR7Nt2-Qum2o3ZX0GU86BZwlmNSUgvmqNWGY/index.html