Skip to content

Commit

Permalink
Merge branch 'v3-integration' into 'main'
Browse files Browse the repository at this point in the history
New api v3 with JWT authentication and Frontend with JWT

See merge request isard/isardvdi!316
  • Loading branch information
vinolas committed Aug 25, 2021
2 parents 1a775a4 + ffe412d commit 4f064f3
Show file tree
Hide file tree
Showing 217 changed files with 12,911 additions and 4,526 deletions.
54 changes: 49 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,61 @@

All notable changes to this project will be documented in this file.

## [develop] - not released
## [3.0.0] - 2021-08-25 | Gran Paradiso

### Upgrade
*Note*: it is possible to upgrade from version `2.0.0-rc1` to `3.0.0`, but we don't assure you everything will work (though it probably will). For a stable installation, start from scratch.

#### After upgrade
### Update tricks

#### Before upgrade
```sh
mkdir -p /opt/isard/hypervisor
docker cp isard-hypervisor:/etc/ssh /opt/isard/hypervisor/sshd_keys
rm /opt/isard/hypervisor/sshd_keys/moduli /opt/isard/hypervisor/sshd_keys/ssh_config /opt/isard/hypervisor/sshd_keys/sshd_config
```
More info [here](https://github.com/isard-vdi/isard/pull/290)

If you bring up 2.0-rc1 version and then upgrade, as you will have the certs already created, they don't get the correct permissions.
Fix permissions running the following command:
```sh
docker network rm isard-network
```
More info [here](https://gitlab.com/isard/isardvdi/-/merge_requests/276#note_626216072)

#### After upgrade
```sh
docker-compose run isard-hypervisor chown -R qemu /etc/pki/libvirt-spice
```
More info [here](https://github.com/isard-vdi/isard/issues/278#issuecomment-716102809)


### Added

- New frontend
- Set a custom logo
- Single Sign On
- Full Nvidia GPU support
- RDP viewer
- RDP browser viewer (using Guacamole)
- Deployments (desktop groups)
- Desktop soft shutdown
- Desktop sharing through an unique URL
- VPN connection for each user

### Fixed

- *Lots* of bugs fixed in all the services

### Changed

- Advanced interface styles cleanup
- Updated Libvirt & QEMU to newer releases
- Updated lots of frontend & webapp Javascript dependencies
- Development moved to Gitlab
- Renamed the 'Updates' section to 'Downloads', in the advanced interface

### Removed

- Old frontend


## [2.0.0-rc1] - 2020-08-03

Expand Down
62 changes: 35 additions & 27 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,29 +1,37 @@
# Contributing

## New feature

1. Fork the `isard-vdi/isard` repository
2. Clone **your** Isard fork and move (if you already have your fork clonned, make sure you have the latest changes: `git fetch upstream`)
3. Add the upstream remote: `git remote add upstream https://github.com/isard-vdi/isard`

1. Initialize Git Flow: `git flow init`
2. Create the feature: `git flow feature start <feature name>`
3. Work and commit it
4. Publish the feature branch: `git flow feature publish <feature name>`
5. Create a pull request from `your username/isard` `feature/<feature name>` to `isard-vdi/isard` `develop` branch



## New release

1. Clone the `isard-vdi/isard` repository
2. Create the release: `git flow release start X.X.X`
3. Publish the release branch: `git flow publish release X.X.X`
4. Create a pull request from the `isard-vdi/isard` `release/X.X.X` to `isard-vdi/isard` `master`
5. Update the Changelog, the `docker-compose.yml` file...
6. Merge the release to master
7. Create a new release to GitHub using as description the Changelog for the version
8. Pull the changes to the local `isard-vdi/isard` clone
9. Change to the new version tag: `git checkout X.X.X`
10. Build the Docker images and push them to Docker Hub

This file is going to be used to document de development process of IsardVDI, both for newcomers and old contributors!

## Development model

- IsardVDI is developed in a *rolling release* model. This means that every change done, is going to be a new version
- Uses [semver](https://semver.org/)
+ If the changes are a bugfix, increase the PATCH (x.x.X)
+ If the changes introduce a new feature, change the MINOR (x.X.x)
+ If some changes break the upgrading process, change the MAJOR (X.x.x)
- Does not provide support for old versions (e.g. if we have version 3.1.1 and 3.2.0 is out, there's never going to be version 3.1.2)

## Example

Let's say we have found a bug and have a solution:

1. For the `isard/isardvdi` repository
2. Clone **your** fork
3. Add the upstream remote: `git remote add upstream https://gitlab.com/isard/isardvdi`
4. If you already have the clone, make sure you have the latest changes:

```sh
git checkout main
git pull upstream
```

5. Create a branch from there: `git checkout -b <name>` (please, pick a descriptive name!)
6. Work in this branch
7. Update the `CHANGELOG.md` and *commit* the changes. Write a [good and descriptive commit message](https://www.freecodecamp.org/news/writing-good-commit-messages-a-practical-guide/).
8. Make sure you're on the latest `upstream` commit: `git fetch upstream && git rebase upstream/main`
8. Push the branch to your remote: `git push`
9. Create a Merge Request to the `main` branch of the `isard/isardvdi` repository. Please be descriptive in both the title and the description!
10. Review the changes and decide it's ready for a release
11. Rebase again against the `upstream/main`. If there has been a release, use `git commit --amend` to edit the last commit and ensure the `CHANGELOG.md` is correct
12. Push to your fork and wait for someone to review the changes and merge it to `main`
13. Done! The GitLab CI will create the release, the tag and publish de Docker images! :)
119 changes: 60 additions & 59 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,103 +1,104 @@
# Isard**VDI**

<img align="right" src="webapp/webapp/webapp/static/img/isard.png" alt="IsardVDI Logo" width="150px;">
<img align="right" src="frontend/src/assets/logo.svg" alt="IsardVDI Logo" width="150px;">

[![](https://img.shields.io/github/release/isard-vdi/isard.svg)](https://github.com/isard-vdi/isard/releases) [![](https://img.shields.io/badge/docker--compose-ready-blue.svg)](https://github.com/isard-vdi/isard/blob/master/docker-compose.yml) [![](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://isardvdi.readthedocs.io/en/latest/) [![](https://img.shields.io/badge/license-AGPL%20v3.0-brightgreen.svg)](https://github.com/isard-vdi/isard/blob/master/LICENSE)
[![release](https://img.shields.io/badge/dynamic/json.svg?label=release&url=https://gitlab.com/api/v4/projects/21522757/releases&query=0.name&color=blue)](https://gitlab.com/isard/isardvdi/-/releases)
[![docker-compose](https://img.shields.io/badge/docker--compose-ready-blue.svg)](https://isard.gitlab.io/isardvdi-docs/install/install/#quickstart)
[![docs](https://img.shields.io/badge/docs-latest-brightgreen.svg)](https://isard.gitlab.io/isardvdi-docs/)
[![license](https://img.shields.io/badge/license-AGPL%20v3.0-brightgreen.svg)](LICENSE)

Open Source KVM Virtual Desktops based on KVM Linux and dockers.
IsardVDI is a Free Software desktop virtualization platform. Some of its features are:

- Engine that monitors hypervisors and domains (desktops)
- **GPU support**: it supports the NVIDIA Grid platform
- **Easy to install**: using Docker and Docker Compose, you can deploy IsardVDI in minutes
- **Scalable**: you can manage multiple hypervisors and add / remove them depending on your needs
- **Fast**: start a desktop and connect to it in a matter of seconds
- **Versatile**: you can run all the OS supported by QEMU/KVM, and there are multiple viewers supported:
+ *SPICE*
+ *noVNC* (web)
+ *RDP*
+ *Guacamole RDP* (web)

- Websocket user interface with real time events.

- HTML5 and native SPICE client viewers

**IMPORTANT NOTE**: You cannot migrate from the version 1 to version 2, since there are many structural changes. You should backup your XML definition files and QCOW disks and import them in the new version.
## Table of contents

# Documentation
- [Quick Start](#quick-start)
- [Usage](#usage)
- [Documentation](#documentation)
- [Version upgrade notes](#version-upgrade-notes)
- [Contributing](#contributing)
- [Support and Contact](#support-and-contact)
- [Other links](#other-links)
- [License](#license)

Follow the extensive documentation to get the most of your installation:

- [https://isardvdi.readthedocs.io/en/develop/](https://isardvdi.readthedocs.io/en/develop/)

## Quick Start with docker & docker-compose
## Quick Start

### 1) *INSTALL docker & docker-compose*
- https://docs.docker.com/install/
- https://docs.docker.com/compose/install/
[https://isard.gitlab.io/isardvdi-docs/install/#quick-start](https://isard.gitlab.io/isardvdi-docs/install/#quick-start)

### 2) **Pull images and bring it up**:

```
wget https://isardvdi.com/docker-compose.yml
docker-compose pull
docker-compose up -d
```

Connect to **https://<ip|domain>**/isard-admin with default user *admin* and password *IsardVDI*
## Usage

NOTE:
### Desktops

- All data will be created in your host /opt/isard folder
- Logs will be at /opt/isard-local
To download predefined and tested desktops, you can go to the `Downloads` section, in the `Administration` frontend.

## Custom build
If you want to create your own desktop:

There is an **isardvdi.cfg.example** file that you can copy to **isardvdi.cfg** and edit to fit your requirements. After that you can create your own *docker-compose.yml* file from that config by issuing *build.sh* script.
1. Go to `Media` section (in the `Administration` frontend), and download an ISO
2. After the download is finished, it will show a desktop icon where you can create the desktop.

Then bring it up with **docker-compose up -d**
### Templates

Please read the [documentation](https://isardvdi.readthedocs.io/en/develop/install/install/#main-parameters) to configure your IsardVDI installation
Create a template from a desktop (in the `Administration` frontend):

### Desktops
1. Open desktop details and click the `Template it` button.
2. Fill in the form and click on `create`.

You can directly go to *Updates* menu and download and test precreated desktops.
It will create a template from that desktop as it was now. You can create as many desktops identical to that template.

If you want to create your own desktop:

1. Go to Media menu and download an ISO
2. After the download is finished it will show a desktop icon where you can create the desktop.
![Main admin screen](https://isard.gitlab.io/isardvdi-docs/images/main.png)

You will find the created desktop in Desktops menu. Implemented encrypted viewers:

- HTML5 Viewer
- Native virt-viewer SPICE protocol.

### Templates
## Documentation

Create a template from a desktop:
Follow the extensive documentation to get the most of your installation:

1. Open desktop details and click on Template it button.
2. Fill in the form and click on create.
- [https://isard.gitlab.io/isardvdi-docs](https://isard.gitlab.io/isardvdi-docs)

It will create a template from that desktop as it was now. You can create as many desktops identical to that template.

### Updates

In Updates menu you will have access to different resources you can download from our IsardVDI updates server.
## Version upgrade notes:

![Main admin screen](https://isardvdi.readthedocs.io/en/latest/images/main.png)
- See [CHANGELOG.md](CHANGELOG.md)

## Documentation

- https://isardvdi.readthedocs.io/en/latest/

## More info:
## Contributing

The development is done at [GitLab](https://gitlab.com/isard/isardvdi). You can open an issue and create pull requests there. Also, there's the [CONTRIBUTING.md](CONTRIBUTING.md) file, that you should read too. Happy hacking! :D



## Support and Contact

If you have a question related with the software, open an issue! Otherwise, email us at `[email protected]`. We also offer professional paid support. If you are interested, email us! :)



Go to [IsardVDI Project website](http://www.isardvdi.com/)
## Other links

### Authors
+ Josep Maria Viñolas Auquer
+ Alberto Larraz Dalmases
+ Néfix Estrada
- Website: [https://www.isardvdi.com](https://www.isardvdi.com)
- Mastodon profile: [@isard@fosstodon.org](https://fosstodon.org/@isard)
- Twitter profile: [@isard_vdi](https://twitter.com/isard_vdi)

### Contributors
+ Daniel Criado Casas

### Support/Contact
Please email us at [email protected] if you have any questions or fill in an issue.

### Social Networks
Mastodon: [@isard@fosstodon.org](https://fosstodon.org/@isard)
Twitter: [@isard_vdi](https://twitter.com/isard_vdi)
## License

IsardVDI is licensed under the AGPL v3.0. You can read the full license [here](LICENSE)
9 changes: 6 additions & 3 deletions api/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,12 @@ RUN apk del .build_deps

RUN apk add curl

COPY api/srcv2 /apiv2
COPY api/src /api

COPY api/docker/run.sh /
#EXPOSE 7039
WORKDIR /api
CMD [ "python3", "start.py" ]
# WORKDIR /api
# CMD [ "python3", "start.py" ]

CMD /run.sh

23 changes: 9 additions & 14 deletions api/docker/requirements.pip3
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
bcrypt==3.1.7
cffi==1.14.0
click==7.1.2
Flask==1.1.2
Flask==2.0.1
Flask-Login==0.5.0
gevent==20.6.0
greenlet==0.4.16
itsdangerous==1.1.0
Jinja2==2.11.2
MarkupSafe==1.1.1
pycparser==2.20
Flask-Cors==3.0.10
gevent==1.4.0
gevent-websocket==0.10.1
greenlet==0.4.15
Flask-SocketIO==5.1.0
python-jose==3.3.0
rethinkdb==2.4.7
six==1.15.0
Werkzeug==1.0.1
zope.event==4.4
zope.interface==5.1.0
bcrypt==3.2.0
responses==0.13.3
6 changes: 6 additions & 0 deletions api/docker/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/sh
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
cd /apiv2
python3 start.py &
cd /api
python3 startv3.py
Loading

0 comments on commit 4f064f3

Please sign in to comment.