Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Any use WebVirtMgr with KVM ??

Featured Replies

  • Replies 120
  • Views 31.7k
  • Created
  • Last Reply

Yes, I was contemplating creating a plug-in. However I was having some server issues which I think I've fixed with some new memory. The only thing I need to figure out is how to run it as a daemon. I can give you what I have now to get it working.

Can you upload the plugin ? We might give some help.. This plugin would be nice to have :-)

Yes, I was contemplating creating a plug-in. However I was having some server issues which I think I've fixed with some new memory. The only thing I need to figure out is how to run it as a daemon. I can give you what I have now to get it working.

Can you just run it as a background process by appending '&' to the command like emhttp is done in the go file?

Can you upload the plugin ? We might give some help.. This plugin would be nice to have :-)

Yeah,  let me finish the file declarations and a basic install.  I should have some time today.

Yes, I was contemplating creating a plug-in. However I was having some server issues which I think I've fixed with some new memory. The only thing I need to figure out is how to run it as a daemon. I can give you what I have now to get it working.

Can you just run it as a background process by appending '&' to the command like emhttp is done in the go file?

Starting it isn't the problem.  I was gonna look at python daemon to try and daemonize it so you could stop it nicely.  Otherwise it could keep your array from stopping if it were on your cache drive.

It would be ideal if we could run this in a Docker container ;-)

Jonp, I think that would be awesome, is this something you are going to set up?

 

//Peter

Hi dmacias,

 

I assume a webserver need to be installed ?

what would the input be in URL Base ?

 

I get this error when go to the adress:port

A server error occurred.  Please contact the administrator.

 

Great works ... hope I get it running ....

 

//Peter

Hmm OK

 

so the interface should show up in the browser on selected port? but I go t the error A server error occurred.  Please contact the administrator

What is the settings for URL Base

//Peter

 

Hmm OK

 

so the interface should show up in the browser on selected port? but I go t the error A server error occurred.  Please contact the administrator

What is the settings for URL Base

//Peter

This is a full complete plugin.  After you run installplg. It installs a page in settings called KVM Manager.  You have to install it from there and then run it.  Then if you want access you have to create users with the  command.  INSTALLDIRECTORY/manage.py createsuperuser  This plugin just runs webvirtmgr as a python script similar to  sickbeard or sabnzbd.  I initially tried running it like the instructions on his github which he uses nginx to serve up the webpages.  Its just a lot more work and trouble and would be better suited for a docker.  This way was easier and only requires a small amount of dependencies.

I still have same error, and I have created a user and add this to the config settings.

 

starting this from command prompt like this

 

cd to install folder...

 

then ...

 sudo -H -u peter1  /usr/bin/python ./manage.py runserver 0:8000
Validating models...

0 errors found
August 29, 2014 - 18:47:26
Django version 1.5.5, using settings 'webvirtmgr.settings'
Development server is running at http://0:8000/
Quit the server with CONTROL-C.

 

acessing the UNRAIDIP:port i see this

 

Traceback (most recent call last):
  File "/usr/lib64/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/usr/lib64/python2.7/site-packages/django/core/handlers/wsgi.py", line 255, in __call__
    response = self.get_response(request)
  File "/usr/lib64/python2.7/site-packages/django/core/handlers/base.py", line 178, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/usr/lib64/python2.7/site-packages/django/core/handlers/base.py", line 224, in handle_uncaught_exception
    return callback(request, **param_dict)
  File "/usr/lib64/python2.7/site-packages/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/django/views/defaults.py", line 41, in server_error
    return http.HttpResponseServerError(template.render(Context({})))
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 140, in render
    return self._render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 134, in _render
    return self.nodelist.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 830, in render
    bit = self.render_node(node, context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 844, in render_node
    return node.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/loader_tags.py", line 124, in render
    return compiled_parent._render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 134, in _render
    return self.nodelist.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 830, in render
    bit = self.render_node(node, context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 844, in render_node
    return node.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/defaulttags.py", line 413, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 496, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 382, in _reverse_with_prefix
    possibilities = self.reverse_dict.getlist(lookup_view)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 297, in reverse_dict
    self._populate()
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 286, in _populate
    lookups.appendlist(pattern.callback, (bits, p_pattern, pattern.default_args))
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 230, in callback
    self._callback = get_callable(self._callback_str)
  File "/usr/lib64/python2.7/site-packages/django/utils/functional.py", line 31, in wrapper
    result = func(*args)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 97, in get_callable
    mod = import_module(mod_name)
  File "/usr/lib64/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/mnt/cache/appdata/webvirtmgr/instance/views.py", line 13, in <module>
    from vrtManager.instance import wvmInstances, wvmInstance
  File "/mnt/cache/appdata/webvirtmgr/vrtManager/instance.py", line 6, in <module>
    from libvirt import libvirtError, VIR_DOMAIN_XML_SECURE, VIR_MIGRATE_LIVE, VIR_MIGRATE_UNSAFE
ImportError: No module named libvirt

 

I still have same error, and I have created a user and add this to the config settings.

 

starting this from command prompt like this

 

cd to install folder...

 

then ...

 sudo -H -u peter1  /usr/bin/python ./manage.py runserver 0:8000
Validating models...

0 errors found
August 29, 2014 - 18:47:26
Django version 1.5.5, using settings 'webvirtmgr.settings'
Development server is running at http://0:8000/
Quit the server with CONTROL-C.

 

acessing the UNRAIDIP:port i see this

 

Traceback (most recent call last):
  File "/usr/lib64/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/usr/lib64/python2.7/site-packages/django/core/handlers/wsgi.py", line 255, in __call__
    response = self.get_response(request)
  File "/usr/lib64/python2.7/site-packages/django/core/handlers/base.py", line 178, in get_response
    response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "/usr/lib64/python2.7/site-packages/django/core/handlers/base.py", line 224, in handle_uncaught_exception
    return callback(request, **param_dict)
  File "/usr/lib64/python2.7/site-packages/django/utils/decorators.py", line 91, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/django/views/defaults.py", line 41, in server_error
    return http.HttpResponseServerError(template.render(Context({})))
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 140, in render
    return self._render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 134, in _render
    return self.nodelist.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 830, in render
    bit = self.render_node(node, context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 844, in render_node
    return node.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/loader_tags.py", line 124, in render
    return compiled_parent._render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 134, in _render
    return self.nodelist.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 830, in render
    bit = self.render_node(node, context)
  File "/usr/lib64/python2.7/site-packages/django/template/base.py", line 844, in render_node
    return node.render(context)
  File "/usr/lib64/python2.7/site-packages/django/template/defaulttags.py", line 413, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 496, in reverse
    return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 382, in _reverse_with_prefix
    possibilities = self.reverse_dict.getlist(lookup_view)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 297, in reverse_dict
    self._populate()
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 286, in _populate
    lookups.appendlist(pattern.callback, (bits, p_pattern, pattern.default_args))
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 230, in callback
    self._callback = get_callable(self._callback_str)
  File "/usr/lib64/python2.7/site-packages/django/utils/functional.py", line 31, in wrapper
    result = func(*args)
  File "/usr/lib64/python2.7/site-packages/django/core/urlresolvers.py", line 97, in get_callable
    mod = import_module(mod_name)
  File "/usr/lib64/python2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/mnt/cache/appdata/webvirtmgr/instance/views.py", line 13, in <module>
    from vrtManager.instance import wvmInstances, wvmInstance
  File "/mnt/cache/appdata/webvirtmgr/vrtManager/instance.py", line 6, in <module>
    from libvirt import libvirtError, VIR_DOMAIN_XML_SECURE, VIR_MIGRATE_LIVE, VIR_MIGRATE_UNSAFE
ImportError: No module named libvirt

Were you installing the plugin or  trying to run it manually?  There's a few things you have to do if it's manual.

 

To  do it manually you have to

sudo pip install  -r /mnt/cache/appdata/webvirtmgr/requirements.txt

 

And then

 

      # Create local settings file because the default settings has a specific timezone
       cp -f /mnt/cache/appdata/webvirtmgr/local/local_settings.py.example /mnt/cache/appdata/webvirtmgr/local/local_settings.py

       # This syncs the msqlite db and will ask you to create db user on first run
        /usr/bin/python /mnt/cache/appdata/webvirtmgr/manage.py syncdb 

       # Moves static files otherwise webpages are messed up
/usr/bin/python /mnt/cache/appdata/webvirtmgr/manage.py collectstatic 
       
       # Also to create more users
       /usr/bin/python /mnt/cache/appdata/webvirtmgr/manage.py createsuperuser

 

EDIT I just restarted unraid and its not working I'll have to see what its missing.

One line did not work, is this

 

cp -f /mnt/cache/appdata/webvirtmgr/local/local_settings.py.example /mnt/cache/appdata/webvirtmgr/local/local_settings.py

 

root@Tower:/mnt/cache/appdata/webvirtmgr# ls -l
total 64
-rw-rw-rw- 1 peter1 users   720 Aug 29 17:10 MANIFEST.in
-rw-rw-rw- 1 peter1 users  2097 Aug 29 17:10 README.rst
drwxrwxrwx 1 peter1 users     6 Aug 29 17:10 _/
drwxrwxrwx 1 peter1 users     0 Aug 29 17:18 cache/
drwxrwxrwx 1 peter1 users   112 Aug 29 17:10 conf/
drwxrwxrwx 1 peter1 users    18 Aug 29 17:08 config/
drwxrwxrwx 1 peter1 users   102 Aug 29 17:10 console/
drwxrwxrwx 1 peter1 users   148 Aug 29 17:10 create/
drwxrwxrwx 1 peter1 users    12 Aug 29 17:10 deploy/
-rw-rw-rw- 1 peter1 users    85 Aug 29 17:10 dev-requirements.txt
drwxrwxrwx 1 peter1 users    54 Aug 29 17:10 hostdetail/
drwxrwxrwx 1 peter1 users    18 Aug 29 17:10 images/
drwxrwxrwx 1 peter1 users   158 Aug 29 17:12 instance/
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 interfaces/
drwxrwxrwx 1 peter1 users    14 Aug 29 17:10 locale/
drwxrwxrwx 1 peter1 users     0 Aug 29 17:18 log/
-rwxrwxrwx 1 peter1 users   253 Aug 29 17:10 manage.py*
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 networks/
-rw------- 1 peter1 users     0 Aug 29 19:36 nohup.out
-rw-rw-rw- 1 peter1 users   147 Aug 29 17:10 requirements.txt
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 secrets/
drwxrwxrwx 1 peter1 users    72 Aug 29 17:10 serverlog/
drwxrwxrwx 1 peter1 users   168 Aug 29 17:12 servers/
-rw-rw-rw- 1 peter1 users  2263 Aug 29 17:10 setup.py
drwxrwxrwx 1 peter1 users    26 Aug 29 17:10 static/
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 storages/
drwxrwxrwx 1 peter1 users   518 Aug 29 17:10 templates/
drwxrwxrwx 1 peter1 users   350 Aug 29 17:12 vrtManager/
drwxrwxrwx 1 peter1 users   222 Aug 29 17:12 webvirtmgr/
-rw-r--r-- 1 peter1 users 38912 Aug 29 21:21 webvirtmgr.sqlite3

 

root@Tower:/mnt/cache/appdata/webvirtmgr# ls locale/
ru/  zh_CN/

 

but I have a subfolder also named webvirtmgron folder webvirtmgr

 

root@Tower:/mnt/cache/appdata/webvirtmgr# ls webvirtmgr
__init__.py  __init__.pyc  local/  settings.py  settings.pyc  settings_jenkins.py  static/  urls.py  urls.pyc  utils/  wsgi.py  wsgi.pyc

I also removed libvirt package from the plugin, it's newer in unraid b7

 

//Peter

 

One line did not work, is this

 

cp -f /mnt/cache/appdata/webvirtmgr/local/local_settings.py.example /mnt/cache/appdata/webvirtmgr/local/local_settings.py

 

root@Tower:/mnt/cache/appdata/webvirtmgr# ls -l
total 64
-rw-rw-rw- 1 peter1 users   720 Aug 29 17:10 MANIFEST.in
-rw-rw-rw- 1 peter1 users  2097 Aug 29 17:10 README.rst
drwxrwxrwx 1 peter1 users     6 Aug 29 17:10 _/
drwxrwxrwx 1 peter1 users     0 Aug 29 17:18 cache/
drwxrwxrwx 1 peter1 users   112 Aug 29 17:10 conf/
drwxrwxrwx 1 peter1 users    18 Aug 29 17:08 config/
drwxrwxrwx 1 peter1 users   102 Aug 29 17:10 console/
drwxrwxrwx 1 peter1 users   148 Aug 29 17:10 create/
drwxrwxrwx 1 peter1 users    12 Aug 29 17:10 deploy/
-rw-rw-rw- 1 peter1 users    85 Aug 29 17:10 dev-requirements.txt
drwxrwxrwx 1 peter1 users    54 Aug 29 17:10 hostdetail/
drwxrwxrwx 1 peter1 users    18 Aug 29 17:10 images/
drwxrwxrwx 1 peter1 users   158 Aug 29 17:12 instance/
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 interfaces/
drwxrwxrwx 1 peter1 users    14 Aug 29 17:10 locale/
drwxrwxrwx 1 peter1 users     0 Aug 29 17:18 log/
-rwxrwxrwx 1 peter1 users   253 Aug 29 17:10 manage.py*
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 networks/
-rw------- 1 peter1 users     0 Aug 29 19:36 nohup.out
-rw-rw-rw- 1 peter1 users   147 Aug 29 17:10 requirements.txt
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 secrets/
drwxrwxrwx 1 peter1 users    72 Aug 29 17:10 serverlog/
drwxrwxrwx 1 peter1 users   168 Aug 29 17:12 servers/
-rw-rw-rw- 1 peter1 users  2263 Aug 29 17:10 setup.py
drwxrwxrwx 1 peter1 users    26 Aug 29 17:10 static/
drwxrwxrwx 1 peter1 users    70 Aug 29 17:10 storages/
drwxrwxrwx 1 peter1 users   518 Aug 29 17:10 templates/
drwxrwxrwx 1 peter1 users   350 Aug 29 17:12 vrtManager/
drwxrwxrwx 1 peter1 users   222 Aug 29 17:12 webvirtmgr/
-rw-r--r-- 1 peter1 users 38912 Aug 29 21:21 webvirtmgr.sqlite3

 

root@Tower:/mnt/cache/appdata/webvirtmgr# ls locale/
ru/  zh_CN/

 

but I have a subfolder also named webvirtmgron folder webvirtmgr

 

root@Tower:/mnt/cache/appdata/webvirtmgr# ls webvirtmgr
__init__.py  __init__.pyc  local/  settings.py  settings.pyc  settings_jenkins.py  static/  urls.py  urls.pyc  utils/  wsgi.py  wsgi.pyc

 

 

Sorry I really need to setup a virtual unraid.  I updated  the plg with a newer version of python-libvirt 1.2.6.

I also removed libvirt package from the plugin, it's newer in unraid b7

 

//Peter

I think the python-libvirt 1.2.6 didnt work on 6b6 so I used 1.2.0. I saw that 6b7 uses libvirt 1.2.7 and I think thats why I was installing different python-libvirt packages.  But the python-libvirt 1.2.6 seems to work with libvirt 1.2.7 that's in 6b7 

 

Edit: I'm gonna finish removing the bloat from the plugin thats not needed

I also removed libvirt package from the plugin, it's newer in unraid b7

 

//Peter

 

Oh I see I put the libvirt package in instead of python-libvirt doh!  But anyway it should work now.

It's OK now!

 

Good work, now I need to see how to add a connection ???

 

//Peter

I removed all the leftovers from the headphones template and fix a few things. It should be completely functional now. It would be nice to add a DB user from the webgui.  Not sure how to get vnc console to work.  It works fine with virt manager but not web virt.

 

  • Author

Wow, I just came here to see if I got 1 reply to this thread!  Lots of interest :)  I guess i'll wait for a wise guy to create a "Unraid friendly" docker of that :)  or if it will go on the Plugin router like the Extended docker page?

It's OK now!

 

Good work, now I need to see how to add a connection ???

 

//Peter

I removed all the leftovers from the headphones template and fix a few things. It should be completely functional now. It would be nice to add a DB user from the webgui.  Not sure how to get vnc console to work.  It works fine with virt manager but not web virt.

 

I think I have a solution to add user from the GUI!

 

But I need assistance how to make a connection! I have try TCP and SSH , but cant get it to work, how do you do it ?

 

EDIT

 

TCP connection is fixed, updated libvirtd.conf

 

//Peter

 

2 more things to solve ...

 

Networks : give this messages this function is not supported by the connection driver: virConnectNumOfNetworks

Interfaces: give this messages this function is not supported by the connection driver: virConnectNumOfInterfaces

 

Any solution to get this working ?

 

//Peter

I think this was a bug in libvirt. Something about libnetcf not included. Not sure if a fix needs to be added or compiled in. Or if it's how unraid configures networking.  You can always configure a bridge from the unraid webgui.

 

 

It's OK now!

 

Good work, now I need to see how to add a connection ???

 

//Peter

I removed all the leftovers from the headphones template and fix a few things. It should be completely functional now. It would be nice to add a DB user from the webgui.  Not sure how to get vnc console to work.  It works fine with virt manager but not web virt.

 

I think I have a solution to add user from the GUI!

 

But I need assistance how to make a connection! I have try TCP and SSH , but cant get it to work, how do you do it ?

 

EDIT

 

TCP connection is fixed, updated libvirtd.conf

 

//Peter

 

I was thinking a popup console or  separate entries for username,  email and password that were passed to createsuperuser

Archived

This topic is now archived and is closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.